我正在使用具有良好 wifi 连接的Swift 2.0、Xcode 7.1 和 iOS 9.1中的 iPhone 5 进行测试。
我已按照本教程(http://www.appcoda.com/google-sign-in-how-to/)进行操作,并且在模拟器上一切正常,但是当我使用 iPhone 5 在真实设备上运行此应用程序时,它会打开谷歌搜索应用程序(其中包含一些注册帐户)用于处理登录。它提示用户选择一个帐户。选择帐户后,谷歌搜索应用程序会询问用户我的应用程序是否可以访问他们的信息。一旦用户点击登录,之后,当返回应用程序代码时,不要在此功能上输入:
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if let err = error {
print(err)
}
else {
performSegueWithIdentifier("idSegueContent", sender: self)
}
}
我的主要ViewController()
课程是这样的:
import UIKit
class ViewController: UIViewController, GIDSignInDelegate, GIDSignInUIDelegate {
@IBOutlet weak var signInButton: GIDSignInButton!
var contentViewController: ContentViewController!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().uiDelegate = self
GIDSignIn.sharedInstance().clientID = "MY_CLIENT_ID"
GIDSignIn.sharedInstance().scopes.append("https://www.googleapis.com/auth/plus.login")
GIDSignIn.sharedInstance().scopes.append("https://www.googleapis.com/auth/plus.me")
GIDSignIn.sharedInstance().signInSilently()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: Google SignIn Delegate Methods
func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if let err = error {
print(err)
}
else {
performSegueWithIdentifier("idSegueContent", sender: self)
}
}
func signIn(signIn: GIDSignIn!, didDisconnectWithUser user: GIDGoogleUser!, withError error: NSError!) {
if let err = error {
print(err)
}
contentViewController.dismissViewControllerAnimated(true, completion: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "idSegueContent" {
contentViewController = segue.destinationViewController as! ContentViewController
}
}
}
如果未安装 Google 搜索应用程序,则 Safari 会在应用程序中正常打开,并且一旦登录,委托回调方法将按预期工作。