Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
深度链接重定向到应用程序仅在iOS 9及以上版本的第二次尝试时有效_Ios_Ios9_Deep Linking_Url Scheme_Openurl - Fatal编程技术网

深度链接重定向到应用程序仅在iOS 9及以上版本的第二次尝试时有效

深度链接重定向到应用程序仅在iOS 9及以上版本的第二次尝试时有效,ios,ios9,deep-linking,url-scheme,openurl,Ios,Ios9,Deep Linking,Url Scheme,Openurl,我有一个奇怪的重定向到应用程序的问题与我们的登录系统在iOS 9只 现在,我已经允许了abitrary负载,并且在plist文件中正确设置了url方案 结果是: 用户被带到SFSafariViewController以使用facebook/google登录 用户输入其凭据(如果已缓存凭据,则不输入) 用户没有被重定向到我们的应用程序,如果他的凭证被缓存,那么用户就会停留在空白页面上,或者停留在最终的google/facebook登录页面上。不会出现“在应用程序中打开”对话框,并且不会调用ope

我有一个奇怪的重定向到应用程序的问题与我们的登录系统在iOS 9只

现在,我已经允许了abitrary负载,并且在plist文件中正确设置了url方案

结果是:

  • 用户被带到SFSafariViewController以使用facebook/google登录
  • 用户输入其凭据(如果已缓存凭据,则不输入)
  • 用户没有被重定向到我们的应用程序,如果他的凭证被缓存,那么用户就会停留在空白页面上,或者停留在最终的google/facebook登录页面上。不会出现“在应用程序中打开”对话框,并且不会调用openUrl AppDelegate函数
现在,如果用户关闭SFSafariViewController,返回到我们的应用程序内登录页面并再次尝试登录,则每次都会重定向到应用程序,每次都会调用openUrl AppDelegate方法

请注意,在iOS9上,我们之前将应用程序外部重定向到Safari以完成登录过程(而不是使用SFSafariViewController),并且出现了相同的问题,而重定向到应用程序的“在应用程序中打开”弹出窗口只会在第二次登录尝试时显示

这一切都只发生在iOS 9上。在iOS 8上,此问题不会出现,我们的用户在登录后总是被重定向到应用程序

OAuth登录后发送到应用程序的重定向url在第一次尝试登录时和第一次尝试登录时相同


有人在iOS 9上遇到过这样的问题吗

正如你提到的关于Facebook,所以

  • 首先,我猜您错过了对FBSDKApplicationDelegate的
    应用程序:openURL:sourceApplication:annotation:
    来自uiapplicationelegate的
    应用程序:openURL:options:

  • 您可能缺少此行
    NSURL*url=[launchOptions objectForKey:uiapplicationaunchoptionsurlkey]在UIApplicationLegate的
    中使用选项完成启动

  • 交叉检查您是否遵循了本节中提到的设置

  • 如果设备越狱,那么在iOS 9.0.2中,它将导致url方案问题

  • 对我有效的解决方案是下面几行代码,因为我的应用程序中集成了FB/G+和你的一样:-

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
        return [[FBSDKApplicationDelegate sharedInstance] application:app
                                                              openURL:url
                                                    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                           annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]
                || [[GIDSignIn sharedInstance] handleURL:url
                                       sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                              annotation:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
    }
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
    
            return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation
                     ] ||
                    [[GIDSignIn sharedInstance] handleURL:url
                                              sourceApplication:sourceApplication
                                                     annotation:annotation];
       }
    
    -(BOOL)应用程序:(UIApplication*)应用程序openURL:(NSURL*)url选项:(NSDictionary*)选项{
    return[[FBSDKApplicationDelegate sharedInstance]应用程序:应用程序
    openURL:url
    sourceApplication:options[UIApplicationOpenUrlOptions SourceApplicationKey]
    注释:选项[UIApplicationOpenUrlOptions注释键]]
    ||[[GIDSignIn sharedInstance]句柄url:url
    sourceApplication:options[UIApplicationOpenUrlOptions SourceApplicationKey]
    注释:选项[UIApplicationOpenURLOptionsSourceApplicationKey]];
    }
    -(BOOL)应用程序:(UIApplication*)应用程序openURL:(NSURL*)url源应用程序:(NSString*)源应用程序注释:(id)注释
    {
    return[[FBSDKApplicationDelegate sharedInstance]应用程序:应用程序
    openURL:url
    sourceApplication:sourceApplication
    注释:注释
    ] ||
    [[GIDSignIn sharedInstance]句柄url:url
    sourceApplication:sourceApplication
    注释:注释];
    }
    
    在我的案例中,我有过深度链接问题的经验。问题的根源是我们在info.plist中将
    CbundleIdentifier
    设置为一个空白字符串“”,通过删除它或将它设置为you apps name它修复了我们的路由问题


    希望能有所帮助。

    不,这看起来有些奇怪,我目前正在开发一个应用程序。。升级到ios 9首先它不起作用,然后我在ino.plist中添加了auth,它就开始起作用了。。但是从你的问题来看。。看起来有点尴尬。。它第一次不起作用,然后就起作用了……你能把你的代码发布到你正在运行的地方,以便从社交项目中进行身份验证吗?如果你把你的登录代码放在这里就好了。@tehjord:我已经解决了同样的问题。。但是需要你的代码来确认问题。如果你能在第一次登录后检查并评论控制台的日志就更好了,它一定是在记录一些东西。只要在模拟器中运行你的应用程序,然后将日志从“登录到白屏页面”粘贴到xcode控制台。我仍然添加了一个答案,但将等待日志。