2016-09-01 44 views
2

我在我的react-native应用程序中使用Facebook SDK,现在我想添加对通用深度链接的支持。反应原生深度链接vs Facebook SDK conflct

我修改每这里说明我的appdelegate:https://developers.facebook.com/docs/ios/getting-started/

深层链接,我想按照这个:https://facebook.github.io/react-native/docs/linking.html

然而,他们似乎都使用同样的方法,我不知道如何调和:

````

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

````

请让我知道我应该如何修改该方法以具备这两种功能。

谢谢

回答

0

最后写一个简单的if语句来看看如果传入URL是Facebook的一个,并返回FBSDKApplicationDelegate如果是,和RCTLinkingManager对象,如果事实并非如此。

0

大厦掉什么@erdostom之前写的(这是一个救星洞察力顺便说一句,谢谢!)这里就是我如何更新我的AppDelegate.m

在由fbsdk提供的方法,而不是返回“处理”,

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
      options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { 

    NSString *myUrl = url.absoluteString; 
    if ([myUrl containsString:@"nameONonFBUrl"]) { 
    return [RCTLinkingManager application:application 
              openURL:url 
           sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
             annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; 
    } else { 
    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                    openURL:url 
                 sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
                   annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; 
    } 
} 
0

这是我如何设法解决这一问题:

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
      options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { 

    NSString *myUrl = url.absoluteString; 
    if ([myUrl containsString:@"PLACE_YOUR_FB_APP_ID_HERE"]) { 
    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                   openURL:url 
                 sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
                  annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
        ]; 
    } else { 
    return [RCTLinkingManager application:application openURL:url options:options]; 
    } 
} 

只是从您的info.plist字符串替换PLACE_YOUR_FB_APP_ID_HERE。例如,在以下情况下,它的fb9999999999:

<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
     <string>fb9999999999</string> 
     </array> 
    </dict> 
    </array>