Google登录在模拟器上运行良好,但在真实设备上运行不正常

时间:2015-11-11 05:41:10

标签: objective-c iphone swift2 ios9.1

我正在使用 Swift 2.0,Xcode 7.1和iOS 9.1 中的iPhone 5进行测试,并且连接良好。

我已经按照本教程(http://www.appcoda.com/google-sign-in-how-to/)了,一切都在模拟器上工作正常但是当我使用iPhone 5在真实设备上运行此应用程序时,它会打开Goog​​le搜索应用程序(其中包含一些注册帐户)处理登录。它提示用户选择一个帐户。选择帐户后,Google搜索应用会询问用户我的应用是否可以访问其信息。用户点击“登录”后, 之后,当回到应用程序代码时,请不要输入此功能:

 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在应用中打开就可以了,登录后,委托回调方法就可以正常工作了。

1 个答案:

答案 0 :(得分:1)

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