5

在我的 AppDelegate 中使用 Google 登录

func application(application: UIApplication,
  openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
    return GIDSignIn.sharedInstance().handleURL(url,
        sourceApplication: sourceApplication,
        annotation: annotation)
}

但从 iOS 9 开始,该功能已被弃用

application:openURL:options: 

如何返回

GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: 注释)

使用 iOS 9 的新功能?

4

2 回答 2

13

用这个:

//Google Login
@available(iOS 9.0, *)
func application(application: UIApplication,
    openURL url: NSURL, options: [String: AnyObject]) -> Bool {
        return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
}

//for IOS 8    
@available(iOS, introduced=8.0, deprecated=9.0)
func application(application: UIApplication,
    openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

    return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication!, annotation: annotation)
}
于 2015-12-27T15:46:51.767 回答
5

仅供参考,如果使用Objective-C,方法实现为:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[GIDSignIn sharedInstance] handleURL:url
                               sourceApplication:sourceApplication
                                      annotation:annotation];
}

如果在 iOS 9 上,建议也实现新格式:

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options {
    return [[GIDSignIn sharedInstance] handleURL:url
                               sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                      annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
于 2016-05-03T14:52:17.563 回答