2

私は、Swift 2.0、Xcode 7.1、および iOS 9.1の iPhone 5 で、Wi-Fi 接続が良好な状態でテストしています。

このチュートリアル ( http://www.appcoda.com/google-sign-in-how-to/ ) に従いましたが、シミュレーターではすべて正常に動作しますが、iPhone 5 を使用して実際のデバイスでこのアプリを実行すると、サインインを処理するための Google 検索アプリ (内部にいくつかの登録済みアカウントを含む)。ユーザーにアカウントを選択するように求めます。アカウントが選択されると、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 はアプリで問題なく開き、サインインすると、デリゲート コールバック メソッドが期待どおりに機能します。

4

1 に答える 1

1

私は同じ問題を抱えていましたが、電話を再起動した後、ようやく機能しました。(何時間ものテスト、チェック、およびコードの再編成の後!) この単純な解決策が他の誰かをトラブルから救うことを願っています。

于 2016-03-13T23:54:47.117 に答える