Her*_*ill 10 facebook openurl ios ios6
第二次更新 在进行了一些挖掘后,似乎存在更大的问题.
openURL未被触发的原因是应用程序在返回前台时似乎冻结了.
如果我启动我的应用程序,单击主页按钮(返回主屏幕),然后重新加载我的应用程序(不是完全重新启动但只是恢复),应用程序打开,但所有内容都被冻结.
- (void)applicationWillEnterForeground:(UIApplication*)应用程序
应用程序恢复时会被触发,但之后没有任何反应.使用IOS 6.0的模拟器我根本没有崩溃,但应用程序只是坐在那里什么都不做.点击屏幕什么都不做.如果我点击主屏幕,我可以返回主屏幕.
因此openIURL未被解雇的原因是因为该应用程序在从Facebook登录时从Safari或Facebook应用程序返回时冻结.它与facebook SDK无关.
为什么会这样?
更新似乎问题与未调用openURL有关.当从safari或facebook app执行自定义URL时,应用程序会打开.如果我创建一个全新的应用程序它确实有效.
用户验证facebook后未调用的另一个相关问题应用程序打开Url方法
我有一个使用facebook登录facebook facebook 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];
Run Code Online (Sandbox Code Playgroud)
在我的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];
}
Run Code Online (Sandbox Code Playgroud)
同样,在IOS 5下,在通过facebook成功登录后调用openURL函数.
在IOS 6下,当我执行openActiveSessionWithPermission(login)时,openURL永远不会被回调.
我根据facebook文档在我的.plist文件中提供了必要的信息
FacebookAppID = (My Facebook App ID)
Run Code Online (Sandbox Code Playgroud)
和
URL types
-> Item 0
-> URL Schemes
-> Item 0 = (My Facebook App ID)
Run Code Online (Sandbox Code Playgroud)
该问题与我在应用程序中使用 TWTweetComposeViewController 的方式有关,因此它毕竟与 facebook SDK 无关。
问题是我正在 ViewDidLoad 中初始化 TWTweetComposeViewController,直到需要时才使用。但是,如果 TWTweetComposeViewController 未显示但已初始化,则当应用程序从后台模式进入时,它将冻结您的应用程序。
修复方法是仅在要显示 TWTweetComposeViewController 时才初始化它。
| 归档时间: |
|
| 查看次数: |
4974 次 |
| 最近记录: |