10

2番目の更新 もう少し掘り下げた後、より大きな問題が発生しているようです。

openURLが起動されない理由は、アプリがフォアグラウンドに戻されたときにアプリがフリーズしているように見えるためです。

アプリを起動し、ホームボタンをクリックして(ホーム画面に戻る)、アプリを再読み込みすると(完全に再起動するのではなく、復元するだけです)、アプリは開きますが、すべてがフリーズします。

-(void)applicationWillEnterForeground:(UIApplication *)application

アプリが戻ってきたときに起動されますが、その後は何も起こりません。IOS 6.0用のシミュレーターを使用すると、クラッシュはまったく発生しませんが、アプリはそこに座って何もしません。画面をクリックしても何も起こりません。ホーム画面をクリックすると、ホーム画面に戻ることができます。

したがって、openIURLが起動されない理由は、SafariまたはFacebookアプリのいずれかからFacebookログインから戻ったときにアプリがフリーズするためです。FacebookSDKとは何の関係もありません。

なぜこうなった?

更新この問題は、openURLが呼び出されていないことに関連しているようです。カスタムURLがsafariまたはfacebookアプリから実行されると、アプリは開きます。まったく新しいアプリを作成すると、機能します。

別の関連する問題の アプリケーションは、ユーザーがFacebookを認証した後に呼び出されないURLメソッドを開きます

FacebookSDK3.0でFacebookログインを使用するアプリがあります。

IOS 5では、フローは意図したとおりに機能し、ISLOGGEDINの出力が表示されます。

NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_stream",@"offline_access",@"email",nil];

[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:YES
completionHandler:^(FBSession *session,
                    FBSessionState status,
                    NSError *error) {
    if(session.isOpen){
      NSLog(@"IS LOGGED IN");
    }                                  
}];

[permissions release];

私のアプリデリゲートでは、openURL関数は次のとおりです

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [[FBSession activeSession] handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [[FBSession activeSession] handleOpenURL:url];
}

繰り返しになりますが、IOS 5では、Facebookからのログインが成功すると、openURL関数が呼び出されます。

IOS 6では、openActiveSessionWithPermission(ログイン)を実行すると、openURLがコールバックされることはありません。

Facebookのドキュメントに従って、.plistファイルに必要な情報を提供しました

FacebookAppID = (My Facebook App ID)

URL types 
 -> Item 0
    -> URL Schemes
      -> Item 0 = (My Facebook App ID)
4

4 に答える 4

1

これは、アプリのplistで設定されているように、アプリがバックグラウンドで実行されないように設定されていることが原因である可能性がありますか?私はこれと同じ問題を抱えています。アプリをバックグラウンドで実行したままにすると、アプリが戻ってopenURLを呼び出すようです。ただし、アプリがバックグラウンドで実行されていない場合は、代わりにapplication:didFinishLaunchingWithOptionsが返され、呼び出されます。openURLは呼び出されません。起動オプションからURLを取得することが可能です。

NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey];

しかし、Facebook認証から戻ったときにapplication:openURLと同じ効果が得られるように、これを呼び出す方法がわかりません。これがいくつかの助けになることを願っています。

于 2012-09-25T19:21:15.213 に答える
1

この問題は、アプリでTWTweetComposeViewControllerを使用していた方法に関連していたため、FacebookSDKとは関係ありません。

問題は、ViewDidLoadでTWTweetComposeViewControllerを初期化していて、必要になるまで使用していなかったことです。ただし、TWTweetComposeViewControllerが表示されていないが初期化されている場合は、バックグラウンドモードから入るときにアプリケーションがフリーズします。

修正は、TWTweetComposeViewControllerを表示しようとしているときにのみ初期化することです。

于 2012-09-30T10:52:20.137 に答える
0

FacebookのShireeshです。詳細を確認できるように、開発者のWebサイトでバグを報告してください。詳細な再現手順を提供し、可能であればスクリーンショットを添付してください。 https://developers.facebook.com/bugs

于 2012-09-22T04:41:56.060 に答える
0

私は自分のアプリのためにFacebookの下に2つのサフィックスを設定しました:fbxxxxxxpaidなどの無料と有料

SDK 2.0では完全に正常に動作しますが、3.2ではアプリがコールバックされず、キャンセルボタンのある空のキャンバスでスタックしました。

URLスキームからサフィックスを削除すると、すぐに機能しました。

このhttps://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/に従ってアプリを更新する必要がありました

于 2013-03-20T02:38:14.447 に答える