簡體   English   中英

Facebook和iOS:在多個應用中共享應用ID

[英]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方案后綴:

兩個URL方案就足夠了

另外,我在相應的plist文件中添加了后綴。 例如,高級應用程序定義為:

info.plist文件的屏幕截圖

“xxxxx ...”只是我的Facebook應用ID。

畢竟,我仍然無法登錄iOS 5.0和6.0上的應用程序(使用本機FB對話框或Safari中的SDK對話框)。 這是我通過Safari登錄時得到的:

警告消息“無法打開頁面,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方案。 以下是一些可能的原因:

  1. 我看到你已經正確地將plist中的CFBundleURLSchemes鍵設置為支持的方案數組。 您還需要將CFBundleURLName設置為com.myApp.MyURLScheme之類的內容 你做過這個嗎?

  2. 在調用will並完成啟動方法之后,iOS將調用你的app delegate - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation方法。 您還必須實現此方法,並且必須返回YES 你呢?

  3. 確保您的網址格式正確無誤。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM