我正在尝试为我们的 android 应用程序实现 Firebase 通知。
我还在应用程序中实现了动态链接。
但是,我无法找到一种使用动态链接发送通知的方法(以便在单击通知时打开某个动态链接)。我只能看到发送文本通知的选项。
是否有任何解决方法或者这是 FCM 的限制?
我正在尝试为我们的 android 应用程序实现 Firebase 通知。
我还在应用程序中实现了动态链接。
但是,我无法找到一种使用动态链接发送通知的方法(以便在单击通知时打开某个动态链接)。我只能看到发送文本通知的选项。
是否有任何解决方法或者这是 FCM 的限制?
您必须使用自定义数据实现通知的服务器端发送,因为当前控制台不支持它。(使用自定义键值对也不起作用,因为当您的应用程序处于后台模式时,通知不会进行深度链接)。在此处阅读更多信息:https ://firebase.google.com/docs/cloud-messaging/server
拥有自己的应用服务器后,您可以将深层链接 URL 包含到通知的自定义数据部分。
在您的FirebaseMessagingService
实现中,您将需要查看有效负载并从那里获取 URL,创建使用该深层链接 URL 的自定义意图。
我目前正在使用 AirBnb 的深度链接调度程序库(https://github.com/airbnb/DeepLinkDispatch),它在这种情况下运行良好,因为您可以设置数据和指向 DeepLinkActivity 的链接,这将为您进行链接处理. 在下面的示例中,我将来自服务器的有效负载转换为一个名为 DeepLinkNotification 的对象,其中包含一个 URL 字段。
private void sendDeepLinkNotification(final DeepLinkNotification notification) {
...
Intent mainIntent = new Intent(this, DeepLinkActivity.class);
mainIntent.setAction(Intent.ACTION_VIEW);
mainIntent.setData(Uri.parse(notification.getUrl()));
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntent(mainIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(notificationId, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = buildBasicNotification(notification);
builder.setContentIntent(pendingIntent);
notificationManager.notify(notificationId, builder.build());
}
深度链接活动:
@DeepLinkHandler
public class DeepLinkActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dispatch();
}
private void dispatch() {
DeepLinkResult deepLinkResult = DeepLinkDelegate.dispatchFrom(this);
if (!deepLinkResult.isSuccessful()) {
Timber.i("Deep link unsuccessful: %s", deepLinkResult.error());
//do something here to handle links you don't know what to do with
}
finish();
}
}
Intent.ACTION_VIEW
在执行此实现时,与仅使用任何 URL设置意图相比,您也不会打开任何无法处理的链接。