2016-09-01 9 views
2

リアクションネイティブアプリでFacebook SDKを使用しています。今では、ユニバーサルディープリンクのサポートも追加したいと考えています。ネイティブディープリンクとFacebook SDKのコンフルクトとの比較

が、私はここの指示に従って私の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

が入ってくるURLがFacebookの一つであり、それがあった場合FBSDKApplicationDelegateを返し、そしてRCTLinkingManagerの目的であった場合、それがなかった場合の文が見ている場合、単純なを書くことになりました。

0

@erdostomが以前書いたもののオフビル(これはところで命の恩人の洞察力だった、ありがとう!)ここで私が代わりに「扱い」の復帰、fbsdkから供給される方法では、私のAppDelegate.m

を更新する方法ですが、

- (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> 
関連する問題