私は、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 はアプリで問題なく開き、サインインすると、デリゲート コールバック メソッドが期待どおりに機能します。