Я тестирую 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 отлично открывается в приложении, и после входа в систему методы обратного вызова делегата работают так, как ожидалось.
viewDidLoad()
всем моим классомViewController()
. - person Muhammad Qasim   schedule 18.11.2015