首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios9中的问题

ios9中的问题
EN

Stack Overflow用户
提问于 2015-11-24 13:07:41
回答 2查看 3.4K关注 0票数 0

我是在项目中工作,其中有谷歌签名功能的应用程序。该应用程序在所有iOS中运行良好,除了iOS9和更高版本之外。

下面是我为google签名使用的代码:-

代码语言:javascript
复制
-(void)methodcallwhenclick_ongoogleSigninbutton{
      GIDSignIn *signInInstance = [GIDSignIn sharedInstance];
        signInInstance.delegate = self;
        GIDSignIn *signIn = [GIDSignIn sharedInstance];
        [signIn signOut];
        signIn.shouldFetchBasicProfile = YES;
        signIn.delegate = self;
        signIn.uiDelegate = self;
        [signIn setClientID:@"<Clientkey>.apps.googleusercontent.com"];
        [signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
        [signIn setDelegate: self];
        [signIn signIn];
}

当我成功地登录到应用程序时,这个方法会调用,但是在ios9中,这个方法不会在webview中打开called.The google视图,并且在我单击“允许”之后,webview就会被关闭。我无法在ios9中获得google的编写代码,在ios9和更高版本中有什么方法可以调用此方法吗?

代码语言:javascript
复制
- (void)signIn:(GIDSignIn *)signIn
didSignInForUser:(GIDGoogleUser *)user
     withError:(NSError *)error
{

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-04 06:04:35

我也面临着同样的问题: google通过GIDSignIn登录,非常适合

但是对于iOS9,一旦按下Google.com页面就会打开。如果我按下此页面上的Done按钮,控件将进入一个固定的方法,使用error = Error Domain=com.google.GIDSignIn Code=-5“用户取消了登录流。UserInfo={NSLocalizedDescription=The用户取消了登录流。}

我研究了一下。找到了两种可能的解决办法:

  1. 白名单签署相关网址- Google Sign-In crashes on iOS 9 attempting to call canOpenURL
  2. 使用handleurl调用- GIDSignIn iOS 9

没有时间去测试哪一个最适合。最终解决方案一到这里就会更新。

更新:成功了!!

iOS9更新了handleUrl()调用。精简了以下两种办法:

代码语言:javascript
复制
(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0)
{
    return [self application:app
        processOpenURLAction:url
          sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                  annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
                  iosVersion:9];
}


(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [self application:application
        processOpenURLAction:url
          sourceApplication:sourceApplication
                  annotation:annotation
                  iosVersion:8];
}

(BOOL)application:(UIApplication *)application processOpenURLAction:(NSURL*)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation iosVersion:(int)version
{
    return [[GIDSignIn sharedInstance] handleURL:url
                               sourceApplication:sourceApplication
                                      annotation:annotation];
}
票数 6
EN

Stack Overflow用户

发布于 2017-03-28 07:37:42

这对我有用。我正在经历GIDGoogleUser的目标变成零。错误是“用户取消了登录流”。正确的类型铸造这是使用!这移除了挂在点击‘完成’后的狩猎活动。

在AppDelegate上:

代码语言:javascript
复制
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {

        let result = GIDSignIn.sharedInstance().handle(url,
                //added exclamation mark
                sourceApplication: String(describing: options[UIApplicationOpenURLOptionsKey.sourceApplication]!),
                annotation: options[UIApplicationOpenURLOptionsKey.annotation])

        return result

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33894545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档