2

我正在使用具有良好 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 会在应用程序中正常打开,并且一旦登录,委托回调方法将按预期工作。

4

1 回答 1

1

我遇到了同样的问题,重启手机后终于可以正常工作了。(经过数小时的测试、检查和重新组织代码!)希望这个简单的解决方案可以让其他人免于麻烦。

于 2016-03-13T23:54:47.117 回答