当应用程序处于前台时,linking.addEventListener 不适用于 ios

问题描述

对于ios,如果应用在前台时收到推送通知,当用户点击推送通知时,Linking.addEventListener不会被执行。

要求是在点击推送通知后将用户移动到特定页面

如果应用程序未运行或应用程序已打开但在后台在这两种情况下,Linking.addEventListener 都按预期工作。

**来自 appdelegate.m 的代码

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(Nsstring *)sourceApplication annotation:(id)annotation
{
  return [RCTLinkingManager application:application openURL:url
                      sourceApplication:sourceApplication annotation:annotation];
}

// Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity
 restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
  return [RCTLinkingManager application:application
                   continueUserActivity:userActivity
                     restorationHandler:restorationHandler];
}

用于处理深层链接的 react-native 代码

if (Platform.OS === 'android') {
      Linking.getinitialURL().then(url => {
        const { navigate } = this.props.navigation;
        let c = url.replace("abcdapp://abcd/","")
        navigate(c)    
        });

    } else {
      Linking.addEventListener('url',this.handleOpenURL);
    }
    Linking.addEventListener('url',this.handleOpenURL);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)