Второе обновление После того, как вы сделали больше копания, кажется, что в игре больше проблемы.
Причина, по которой openURL не запускается, заключается в том, что приложение кажется замерзающим, когда оно возвращается на передний план.
Если я запустил приложение, нажмите кнопку "домой" (вернитесь на главный экран) и перезагрузите мое приложение (не полный перезапуск, а просто восстановление), приложение откроется, но все будет заморожено.
- (void) applicationWillEnterForeground: (приложение UIApplication *)
запускается, когда приложение возвращается, однако после этого ничего не происходит. Используя симулятор для IOS 6.0, я не получаю никакого сбоя, но приложение просто сидит там, ничего не делая. Щелчок на экране ничего не делает. Если я нажимаю на главный экран, я могу вернуться на главный экран.
Поэтому причина, по которой openIURL не запускается, заключается в том, что приложение зависает, когда оно возвращается из входа в Facebook либо из приложения Safari, либо из приложения Facebook. Это не имеет никакого отношения к SDK в facebook.
Почему это происходит?
Обновление Кажется, проблема связана с тем, что openURL не вызывается. Приложение открывается, когда пользовательский URL-адрес выполняется из сафари или приложения facebook. Если я создаю совершенно новое приложение, оно действительно работает.
Другой связанный выпуск приложение open Url метод не вызывается после того, как пользователь аутентифицирует facebook
У меня есть приложение, использующее логин facebook с фейсбук SDK 3.0.
В IOS 5 поток работает так, как предполагалось, и я вижу вывод IS LOGGED IN:
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];
В моем делегате App функция 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 функция openURL вызывается после успешного входа в систему через facebook.
В IOS 6, когда я выполняю openActiveSessionWithPermission (логин), openURL никогда не вызывается назад.
Я предоставил необходимую информацию в файле .plist в соответствии с документацией на facebook
FacebookAppID = (My Facebook App ID)
и
URL types
-> Item 0
-> URL Schemes
-> Item 0 = (My Facebook App ID)