Facebook和iOS:在多个应用中共享应用ID

Sta*_*ash 11 facebook url-scheme ios facebook-ios-sdk

在按照Facebook的教程后,我在实现此功能时遇到问题:https: //developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/

基本上,我在同一个项目下有2个目标 - 一个用于免费版本,另一个用于高级版本.我为此创建并设置了一个Facebook应用程序,并添加了2个url方案后缀:

两个URL方案就足够了

另外,我在相应的plist文件中添加了后缀.例如,高级应用程序定义为:

info.plist文件的屏幕截图

"xxxxx ..."只是我的Facebook应用ID.

毕竟,我仍然无法登录iOS 5.0和6.0上的应用程序(使用本机FB对话框或Safari中的SDK对话框).这是我通过Safari登录时得到的:

警告消息

登录的代码是:

NSArray *permissions = kInitialPermissions;

BOOL result = NO;
FBSession *session = [[FBSession alloc] initWithAppID:@"xxxxxxxxxxx"
                                          permissions:@[]
                                      urlSchemeSuffix:@"premium"
                                   tokenCacheStrategy:nil];

if (allowLoginUI ||
    (session.state == FBSessionStateCreatedTokenLoaded)) {
    [FBSession setActiveSession:session];
}

result = [FBSession openActiveSessionWithReadPermissions:permissions
                                                allowLoginUI:allowLoginUI
                                           completionHandler:completion];
return result;
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激.谢谢!

Aar*_*ger 0

您的问题是 iOS 无法识别自定义 URL 方案。以下是一些可能的原因:

  1. 我发现您已将CFBundleURLSchemesplist 中的密钥正确设置为一系列受支持的方案。您还需要设置为com.myApp.MyURLSchemeCFBundleURLName之类的内容。你做过这个吗?

  2. 调用 will 和 did finish 启动方法后,iOS 将调用您的应用程序委托的- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation方法。您还必须实现此方法并且它必须返回YES。你?

  3. 确保您的 URL 格式正确。 fbxxxxxxpremium://foo=bar不会起作用,但fbxxxxxxpremium://?foo=bar会(这?是强制性的)。

请注意,如果您的目标是 iOS 4.1 或更早版本,则委托方法将略有不同。

有关更多信息和示例代码,请参阅iOS SDK 文档中高级应用程序技巧的与其他应用程序通信部分。