1

アプリケーションで firebase 通知と動的リンクを使用しています

通知のペイロードとしてディープリンクを送信しています。ユーザーが通知をクリックすると、このようにディープリンクが開きます

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(pushAction.getActionDeeplink()));  // contains the deeplink
        if (pushNotification.getExtraData() != null) {  // not extra Data from push
           intent.putExtra(IntentKeys.PUSH_DATA_EXTRA, pushNotification.getExtraData());
        }
        PendingIntent actionPendingIntent =
                PendingIntent.getActivity(context, pushNotification.getNotificationId(), intent,
                        PendingIntent.FLAG_UPDATE_CURRENT);
       final NotificationCompat.Builder mBuilder =
                    new NotificationCompat.Builder(context)
                            .setSmallIcon(R.mipmap.ic_launcher)
                            .setLargeIcon(largeIcon)
                            .setTicker(pushNotification.getTicker())
                            .setContentTitle(pushNotification.getTitle())
                            .setContentText(pushNotification.getMessage())
                            .setAutoCancel(true)
                            .setContentIntent(actionPendingIntent);
notificationManager.notify(uniqueId, mBuilder.build());                                

アプリケーションでアクティビティを宣言しました

<activity
        android:name=".ui.activities.SaveActivity"
        android:label="@string/title_activity_save"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden|adjustPan">

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="example.com"
                android:pathPattern="/save"
                android:scheme="http" />
        </intent-filter>
    </activity>

通知によって送信されるディープリンク URL はhttp://example.com/saveです。

アクティビティでは、このようなディープリンクを受け取るように設定しました

public class SaveActivity extends BaseActivity {
@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_save);
    setupGoogleApiClient();

}

private void setupGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(AppInvite.API)
            .build();       
    boolean autoLaunchDeepLink = false;
    AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
            .setResultCallback(
                    new ResultCallback<AppInviteInvitationResult>() {
                        @Override
                        public void onResult(@NonNull AppInviteInvitationResult result) {
                            if (result.getStatus().isSuccess()) {
                                Intent intent = result.getInvitationIntent();
                                String deepLink = AppInviteReferral.getDeepLink(intent);
                                Log.d("save getInvitation: found deeplink." + deepLink);                               
                                /**************************** ISSUE ***********************/
                                if(intent.hasExtra(IntentKeys.PUSH_DATA_EXTRA)) {
                                        // there is no extra data :( 
                                }
                               /**************************** ISSUE ***********************/  
                            } else {
                                Log.d("save getInvitation: no deep link found.");


                            }

                        }
                    });
}
}

すべてが期待どおりに機能しています。SaveActivity が呼び出され、SaveActivity を開いています。ただし、アクティビティで余分なデータは受信されません。

インテントのキーとして IntentKeys.PUSH_DATA_EXTRA を使用して文字列エクストラを設定しています。

4

0 に答える 0