11

Facebookのチュートリアルに従った後、この機能の実装に問題があります: https ://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/

基本的に、同じプロジェクトに2つのターゲットがあります。1つは無料バージョン用で、もう1つはプレミアム用です。このために単一のFacebookアプリを作成してセットアップし、2つのURLスキームサフィックスを追加しました。

2つの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;

任意のアイデアをいただければ幸いです。ありがとう!

4

3 に答える 3

0

あなたの問題は、カスタムURLスキームがiOSによって認識されていないことです。考えられる原因は次のとおりです。

  1. CFBundleURLSchemesplistのキーを、サポートされているスキームの配列に正しく設定しているようです。また、 com.myApp.MyURLSchemeCFBundleURLNameのようなものに設定する必要があります。あなたはこれをしましたか?

  2. willを呼び出してメソッドの起動を完了した後、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以前をターゲットにしている場合、デリゲートの方法は少し異なることに注意してください。

詳細とサンプルコードについては、iOSSDKドキュメントの高度なアプリトリックの「他のアプリとの通信」セクションを参照してください。

于 2013-02-23T03:47:14.097 に答える
0

問題は、あなたが電話しているときだと思います:

result = [FBSession openActiveSessionWithReadPermissions:permissions
                                            allowLoginUI:allowLoginUI
                                       completionHandler:completion];

開かれているセッションには URL スキーム サフィックスがありません。

だからあなたは電話するべきです

[session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent 
        completionHandler:completion];
于 2013-02-23T21:43:24.380 に答える