2012-09-19 9 views
10

第2の更新 もう少し掘り下げてしまえば、もっと大きな問題があるようです。Facebook SDK 3.0ログイン後のIOS 6コールバックは呼び出されません

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

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

- (無効)applicationWillEnterForeground:(のUIApplication *)アプリケーション

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

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

どうしてですか?

更新この問題は、openURLが呼び出されていないことに関連しているようです。カスタムURLがSafariやFacebookのアプリから実行されるとアプリが開きます。私が新しいアプリを作ると、それはうまくいく。

別の関連問題application open Url method not called after user authenticates the facebook

私はFacebookのSDK 3.0でFacebookのログインを使用するアプリを持っています。私のアプリデリゲートで

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]; 

の下で、再び

- (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]; 
} 

を次のようにOpenURLの機能がある:IOS 5意図したとおりの流れが動作し、私はIS LOGGED INの出力を参照しています下の

IOS 5 openURL関数は、facebookを通じたログインが成功した後に呼び出されます。

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

私は、これはFacebookのからShireeshであるFacebookのマニュアルに従って、私の.plistファイルに

FacebookAppID = (My Facebook App ID) 

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

に応じて私のアプリをアップデートする必要がありました。しかし、私のアプリケーションでは、Appdelegate.mの最初のApp Delegateメソッドがありません。 2番目のものだけ。また、私のチュートリアルのブログ(http://xcodenoobies.blogspot.com/2012/09/how-to-upload-photo-and-update-status.html)でサンプルプロジェクトを見てみたいかもしれません。また、2つのアプリケーション(LiteとProのようなもの)を持っていて、両方のアプリケーションで同じFacebookAppIDを使用すると、クラッシュすることになります。 2つ以上のアプリケーションに同じfbappidを使用したい場合は、いくつか特別なことがあります。(facebook devs wikiを参照してください) – GeneCode

+0

Facebook SDK 2.0でも同じ問題がありますので、iOS 6には関係ありません。 –

+0

By IOS 3.1では非推奨のopenActiveSessionWithPermissionsとなっていますが、それはthat.Youに関連しているとは思われません。公開のためにwithopenActiveSessionWithReadPermissionsとopenActiveSessionWithPublishPermissionsを読む許可を与える必要があります。 –

答えて

1

この問題は、私のアプリでTWTweetComposeViewControllerを使用している方法に関連していたので、facebook SDK afterallには関係しません。

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

TWTweetComposeViewControllerは、表示しようとしているときにのみinitiliazeになります。自由とfbxxxxxxpaid

彼らはSDK 2.0の下で完全に正常動作しますが、3.2に私のアプリはバックと呼ばれていなかったなどとして支払われたと私は、空のキャンバスに捕まってしまった:

0

を、必要な情報を提供しています。開発者のウェブサイトでバグを報告してください。詳細を見ることができます。可能であれば詳細な手順を記述し、スクリーンショットを添付してください。 https://developers.facebook.com/bugs

1

あなたのアプリがアプリのplistに設定されているようにバックグラウンドで実行されないように設定されている可能性がありますか?私はこの同じ問題を抱えています。アプリがバックグラウンドで実行されたままになると、openURLを呼び出して呼び出します。しかし、アプリがバックグラウンドで実行されない場合は、代わりにapplication:didFinishLaunchingWithOptionsを呼び出してopenURLを呼び出さないでください。

NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey]; 

が、私はそれをアプリケーションと同じ効果があるように、これを呼び出す方法を考え出したていない:起動オプションからURLを取得することが可能であるFacebookの認証からの復帰時のOpenURLを。これはいくつかの助けを願っています

+0

私はこの同じ問題を抱えています。 – Andres

関連する問題