[英]Facebook & iOS: Share an app ID across multiple apps
在按照Facebook的教程后,我在實現此功能時遇到問題: https : //developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/
基本上,我在同一個項目下有2個目標 - 一個用於免費版本,另一個用於高級版本。 我為此創建並設置了一個Facebook應用程序,並添加了2個url方案后綴:
另外,我在相應的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;
任何想法將不勝感激。 謝謝!
除了將fbxxxxxxxxxxpremium URL Scheme添加到plist文件中的URL Types數組(您似乎正在執行此操作)之外,還要添加新的鍵/值:
key = FacebookUrlSchemeSuffix
value = premium
所以在plist文件中:
<key>FacebookUrlSchemeSuffix</key>
<string>premium</string>
這為我修好了。 Facebook文檔提到了這一點,但沒有說清楚IMO。
您的問題是iOS無法識別自定義URL方案。 以下是一些可能的原因:
我看到你已經正確地將plist中的CFBundleURLSchemes
鍵設置為支持的方案數組。 您還需要將CFBundleURLName
設置為com.myApp.MyURLScheme之類的內容 。 你做過這個嗎?
在調用will並完成啟動方法之后,iOS將調用你的app delegate - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
方法。 您還必須實現此方法,並且必須返回YES
。 你呢?
確保您的網址格式正確無誤。 fbxxxxxxpremium://foo=bar
不起作用,但fbxxxxxxpremium://?foo=bar
將( ?
是強制性的)。
請注意,如果您的目標是iOS 4.1或更早版本,則委托方法會略有不同。
有關更多信息和示例代碼,請參閱iOS SDK文檔中的“ 高級應用程序技巧”中的“ 與其他應用程序通信”部分。
我認為問題出在你打電話的時候:
result = [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:completion];
正在打開的會話沒有url方案后綴。
所以你應該打電話
[session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent
completionHandler:completion];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.