我遇到了一个问题,
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
知道吗?
我之前对此进行了研究,似乎。。。
- 您不能使用firebase
Compose Notification
UI在FCM消息中发送深度链接 - 您可能可以使用FCM REST API在FCM消息中发送深层链接。在这个堆叠的帖子更多
REST API实现起来非常繁琐,您可能会更好地使用这样的方式:使用带有少量数据负载的firebase消息组合器,您的应用程序使用Inverse消息传递方法firebase.messaging().getInitialNotification()
和firebase.messaging().onNotificationOpenedApp()
解析消息数据。
至于深度链接,您的用户可能会在尝试共享内容时在应用程序中创建,或者您可能会在firebase动态链接UI中创建:为了让您的应用程序注意到设备上正在点击的实际深度链接,可以使用Inverse动态链接方法firebase.dynamicLinks().getInitialLink()
和firebase.dynamicLinks().onLink()
。