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)