erd*_*tom 9 facebook objective-c react-native
我在我的react-native应用程序中使用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];
}
Run Code Online (Sandbox Code Playgroud)
````
请告诉我如何修改方法以获得这两种功能.
谢谢
Asa*_*vid 10
这就是我设法解决问题的方法:
- (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];
}
}
Run Code Online (Sandbox Code Playgroud)
只需用PLACE_YOUR_FB_APP_ID_HEREinfo.plist中的字符串替换即可.例如,在下面的例子中它的fb9999999999:
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb9999999999</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
最终编写了一个简单的 if 语句来查看传入的 URL 是否是 Facebook 的 URL,如果是,则返回 FBSDKApplicationDelegate,如果不是,则返回 RCTLinkingManager 对象。
| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |