Show Menu
主題×

利用深層連結實施推送訊息

在您於 Adobe Mobile Services 使用者介面中設定深層連結 URL 後,此 URL 會位於含有 adb_deeplink 鍵值的推送裝載中。
您可以呼叫 FirebaseMessagingService 中的 remoteMessage.getData().get("adb_deeplink") 以取得 URL。
您可以根據裝載是否含有深層連結 URL 來定義不同的目的。
  1. 完成下列其中一項作業:
    • 如果推送裝載中​ ​深層連結 URL,請利用此 URL 建立 ACTION_VIEW 目的。
      當使用者點擊推送訊息時,便會觸發深層連結。
    • 如果推送裝載中​ 沒有 ​深層連結 URL,請建立可以開啟您其中一項活動的目的。

範例

以下為延伸 FirebaseMessagingService 類別的範例實施:
public void onMessageReceived(RemoteMessage message) { 
 
       Map<String, String> data = message.getData(); 
       String messageStr = data.get("message"); 
       String deepLink = data.get("adb_deeplink"); 
 
       sendNotification(deepLink, messageStr, data); 
    } 
 
private void sendNotification(String deeplink, String message, Map<String, String> data) { 
       Intent intent; 
 
       if (deeplink!=null) { 
           intent = new Intent(Intent.ACTION_VIEW, Uri.parse(deeplink)); 
       } else { 
           intent = new Intent(this, MainActivity.class); 
       } 
 
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
 
       //put the data map into the intent to track clickthroughs 
       Bundle pushData = new Bundle(); 
       Set<String> keySet = data.keySet(); 
       for (String key : keySet) { 
           pushData.putString(key, data.get(key)); 
       } 
 
       intent.putExtras(pushData); 
 
       PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 
               PendingIntent.FLAG_ONE_SHOT); 
 
       Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
 
       NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
                .setSmallIcon(R.drawable.icon) 
                .setContentTitle("FCM Deep Link Push") 
                .setContentText(message) 
                .setAutoCancel(true) 
                .setSound(defaultSoundUri) 
                .setContentIntent(pendingIntent); 
 
       NotificationManager notificationManager =  
       (NotificationManager)getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); 
           notificationManager.notify(0, notificationBuilder.build()); 
       }