重定向至基于Deeplink的React Native Firebase推送通知的特定屏幕



我遇到了一个问题,

1(我正在使用Firebase发送远程推送通知,我通过从FCM测试仪发送来进行测试。

2(我已经在我的项目中激活了深度链接并开始使用它。

3(在FCM测试仪中,我把这个关键值传递到";notifications.data":

{"链接":"MY_link"}

现在我希望我的应用程序能够识别其中有一个deepLink;读一读。我以某种方式做到了,但不是我想要的方式。

我做了什么:

NotificationContextProvider.ts

useEffect(() => {
const unsubscribeClosedApp = messaging().onNotificationOpenedApp(
remoteMessage => {
addNotification(remoteMessage);
console.log(
'Notification caused app to open from background state:',
remoteMessage.notification,
);
redirectFromKey(remoteMessage.data?.redirection);
console.log(remoteMessage.data, 'remote message data');
console.log(remoteMessage, 'remote message full');
console.log(remoteMessage.notification?.body, 'remote message body');
console.log(remoteMessage.notification?.title, 'remote message title');
if (remoteMessage.data?.link === 'https://[MY-LINK]/TnRV') {
console.log(remoteMessage.data?.link, 'Deeplink detected & opened');
navigation.navigate({
name: 'Logged',
params: {
screen: 'Onboarded',
params: {
screen: 'LastAnalyse',
},
},
});
}
},
);

它运行得很好,但它不是基于阅读链接,而是通过比较价值,这不是我想要实现的。

Firebase Doc为我们提供了一种方法:https://rnfirebase.io/dynamic-links/usage#listening-对于动态链路

这就是Firebase的建议:

import dynamicLinks from '@react-native-firebase/dynamic-links';
function App() {
const handleDynamicLink = link => {
// Handle dynamic link inside your own application
if (link.url === 'https://invertase.io/offer') {
// ...navigate to your offers screen
}
};
useEffect(() => {
const unsubscribe = dynamicLinks().onLink(handleDynamicLink);
// When the component is unmounted, remove the listener
return () => unsubscribe();
}, []);
return null;
}

我也不知道该怎么做。我必须提到的是,深度链接在我的项目中设置正确,运行良好,我的代码是用Typescript编写的。

Basicaly你可以在这个网页上找到我想要实现的目标,但我想使用Firebase/messaging+动态链接。我的项目不使用本地通知,而且永远不会使用:https://medium.com/tribalscale/working-with-react-navigation-v5-firebase-cloud-messaging-and-firebase-dynamic-links-7d5c817d50aa

知道吗?

我之前对此进行了研究,似乎。。。

  • 您不能使用firebaseCompose NotificationUI在FCM消息中发送深度链接
  • 您可能可以使用FCM REST API在FCM消息中发送深层链接。在这个堆叠的帖子更多

REST API实现起来非常繁琐,您可能会更好地使用这样的方式:使用带有少量数据负载的firebase消息组合器,您的应用程序使用Inverse消息传递方法firebase.messaging().getInitialNotification()firebase.messaging().onNotificationOpenedApp()解析消息数据。

至于深度链接,您的用户可能会在尝试共享内容时在应用程序中创建,或者您可能会在firebase动态链接UI中创建:为了让您的应用程序注意到设备上正在点击的实际深度链接,可以使用Inverse动态链接方法firebase.dynamicLinks().getInitialLink()firebase.dynamicLinks().onLink()

相关内容

  • 没有找到相关文章

最新更新