Вход в Google отлично работает на симуляторе, но не на реальном устройстве

Я тестирую iPhone 5 в Swift 2.0, Xcode 7.1 и iOS 9.1 с хорошим подключением к Wi-Fi.

Я следовал этому руководству ( http://www.appcoda.com/google-sign-in-how-to/ ), и все отлично работает на симуляторе, но когда я запускаю это приложение на реальном устройстве с помощью своего iPhone 5, оно открывает приложение поиска Google (с некоторыми зарегистрированными учетными записями внутри них) для знака дескриптора in. Предлагает пользователю выбрать учетную запись. После выбора учетной записи приложение поиска 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 отлично открывается в приложении, и после входа в систему методы обратного вызова делегата работают так, как ожидалось.


person Muhammad Qasim    schedule 11.11.2015    source источник
comment
Можете ли вы опубликовать больше кода?   -  person Caleb Kleveter    schedule 12.11.2015
comment
@CalebKleveter: я обновил свой вопрос. я заменил свой код функции viewDidLoad() всем моим классом ViewController().   -  person Muhammad Qasim    schedule 18.11.2015
comment
@CalebKleveter: я могу отправить тебе мой проект по электронной почте. это всего лишь демонстрационный проект по интеграции Google Sign In в приложения для iOS. Как я объяснил в своем вопросе, я следовал этому руководству по ссылке для дополнительную информацию можно найти по ссылке на руководство.   -  person Muhammad Qasim    schedule 18.11.2015
comment
@MuhammadQasim, ты когда-нибудь решал эту проблему? Я испытываю ту же проблему.   -  person Sean    schedule 14.03.2016


Ответы (1)


У меня была такая же проблема, и, наконец, она заработала после перезагрузки телефона. (После нескольких часов тестов, проверок и реорганизации кода!) Будем надеяться, что это простое решение спасет кого-то еще от неприятностей.

person Sean    schedule 13.03.2016