web-dev-qa-db-fra.com

Google Sign In ne fonctionne pas sur iOS 10 Beta 7 avec Xcode 8 beta 6

J'ai une application dans l'App Store qui fonctionnait parfaitement jusqu'aux premières versions de iOS 10 (je ne sais pas exactement lequel). Cela fonctionne également parfaitement sur iOS 9.3.

Cependant, je ne teste pas sur iOS 10 beta 7 et la connexion à Google est complètement interrompue. J'utilise la dernière version de GIDSignIn de cocoapods

Voici mon code:

[GIDSignIn sharedInstance].clientID = [[ParseFetcher sharedInstance] getRandomParseK];
[GIDSignIn sharedInstance].delegate = sharedInstance;
[GIDSignIn sharedInstance].uiDelegate=sharedInstance;
[GIDSignIn sharedInstance].scopes = [NSArray arrayWithObjects:@"https://www.googleapis.com/auth/youtube",@"https://www.googleapis.com/auth/youtube.force-ssl", nil];
[[GIDSignIn sharedInstance] signIn];

Voici à quoi ça ressemble sur l'appareil:

 screenshot 1

Ça reste coincé comme ça.

Si je clique sur le bouton d'actualisation en haut, il essaie de se rafraîchir et reste bloqué ici pour toujours.

 screenshot 2

En cliquant sur le bouton Terminé, je suis renvoyé à mon application.

Il n'y a aucune erreur enregistrée dans la console.

Cependant, lorsque je lance la même application sur le simulateur iOS 10, le safari view controller ne s'ouvre même pas. Rien ne se passe du tout. Mais la console enregistre cette longue information prolixe dont voici le texte qui semble être le plus "utile", mais je n'ai aucune idée de ce qui ne va pas:

nw_endpoint_resolver_receive_report [8 i.ytimg.com:443 in_progress resolver (satisfied)] received child report:[8.1 206.248.149.148:443 waiting path (satisfied)]
2016-08-22 23:19:51.531570 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_connection_endpoint_report [8.1 206.248.149.148:443 waiting path (satisfied)] reported event path:satisfied
2016-08-22 23:19:51.531909 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_proxy_handler_should_use_proxy Looking up proxy for hostname: <nil>, ifindex: 0
2016-08-22 23:19:51.533116 XXXXAPPNAMEXXXXXXX[4561:195631] [] -[NWConcrete_nw_endpoint_flow startWithHandler:] [8.1 206.248.149.148:443 waiting socket-flow (satisfied)]
2016-08-22 23:19:51.533548 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_flow_setup_socket [8.1 206.248.149.148:443 in_progress socket-flow (satisfied)] creating socket
2016-08-22 23:19:51.534108 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_flow_attach_protocols [8.1 206.248.149.148:443 in_progress socket-flow (satisfied)]
2016-08-22 23:19:51.534672 XXXXAPPNAMEXXXXXXX[4561:195631] [] __nwlog_err_simulate_crash simulate crash already simulated "nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available"
2016-08-22 23:19:51.535415 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available, dumping backtrace:
        [x86_64] libnetcore-856.1.8
    0   libsystem_network.dylib             0x000000010c6e280e __nw_create_backtrace_string + 123
    1   libnetwork.dylib                    0x000000010e0d5194 nw_socket_add_input_handler + 3002
    2   libnetwork.dylib                    0x000000010e0b2db8 nw_endpoint_flow_attach_protocols + 3768
    3   libnetwork.dylib                    0x000000010e0b1dd5 nw_endpoint_flow_setup_socket + 563
    4   libnetwork.dylib                    0x000000010e0b0b34 -[NWConcrete_nw_endpoint_flow startWithHandler:] + 2612
    5   libnetwork.dylib                    0x000000010e0cbd11 nw_endpoint_handler_path_change + 1261
    6   libnetwork.dylib                    0x000000010e0cb740 nw_endpoint_handler_start + 570
    7   libnetwork.dylib                    0x000000010e0e3003 nw_endpoint_resolver_start_next_child + 2240
    8   libdispatch.dylib                   0x000000
2016-08-22 23:19:51.535995 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_flow_attach_protocols [8.1 206.248.149.148:443 in_progress socket-flow (satisfied)] Attached flow protocol
2016-08-22 23:19:51.536475 XXXXAPPNAMEXXXXXXX[4561:195631] [] nw_endpoint_resolver_receive_report [8 i.ytimg.com:443 in_progress resolver (satisfied)] received child report:[8.1 206.248.149.148:443 in_progress socket-flow (satisfied)]

REMARQUE: iOS 9.3 fonctionne parfaitement. Cela se produit également sur tous les appareils - testé sur iPhone 6s et iPhone 5s.

12
Pranoy C

Je ne sais pas si c'est ce à quoi les autres personnes sont confrontées, mais je l'ai résolu en ajoutant un [self.view layoutIfNeeded]. Je sais que c'est bizarre mais c'est ce qui a fonctionné pour moi, je ne suis pas sûr de savoir pourquoi.

J'utilisais un conteneur d'affichage personnalisé à l'intérieur duquel je montrais le contrôleur de connexion de Google en tant qu'enfant. Donc, avant d'ajouter le contrôleur de vue personnalisé au conteneur, je devais faire [self.view layoutIfNeeded] car sinon, la présentation de la vue n'avait pas encore été définie, le sdk de Google utilise probablement la largeur/hauteur quelque part à l'intérieur. 

Je ne suis pas sûr que ce soit la bonne solution mais cela semble avoir résolu mon problème.

1
Pranoy C

Le projet exemple iOS de Google SignIn a également le même problème.

Il retourne:

"Error Domain=com.google.GIDSignIn Code=-2 "keychain error" UserInfo={NSLocalizedDescription=keychain error}"

Cela semble être un bug.

9
Basheer

J'utilise (toujours) le SDK Google+ pour la connexion (1.7.1), ainsi que cassé sur iOS 10 bêta 7. Je pensais passer à GIDSignIn car GPPSignIn est obsolète. mais je suppose que je vais attendre la prochaine bêta ...

4
Amir Aharon

Activez "Partage du trousseau" dans l'onglet "Capacités" de votre cible et cela fonctionnera.

2
Dylan Diamond

Je suis capable de trouver une solution dans mon cas en corrigeant mon code pour présenter correctement une sous-vue. Avant de recevoir cet avertissement, mais je l'ai ignoré:

Warning :-Presenting view controllers on detached view controllers is discouraged

jusqu'à ce que j'ai vu la réponse de Pranoy C. Mon code est structuré de la même manière qu'un conteneur de vues est utilisé pour présenter des sous-vues contenant le bouton Google. Il n'utilisait pas correctement le conteneur pour présenter une sous-vue. J'ai donc suivi le guide Apple , en particulier ce bloc:

- (void) displayContentController: (UIViewController*) content {
    [self addChildViewController:content];
    content.view.frame = [self frameForContentController];
    [self.view addSubview:self.currentClientView];
    [content didMoveToParentViewController:self];
}

Une fois l'avertissement disparu, Google a commencé à fonctionner correctement.

En ce qui concerne la cause première de ce problème, je ne suis toujours pas certain, mais l'avertissement semble être un indice. Cela concerne les contrôleurs de vue détachés. (Je ne suis pas très expérimenté en codage iOS. Par conséquent, si quelqu'un a plus de connaissances en matière de vues, consultez les contrôleurs de vue, n'hésitez pas à en parler.)

1
jqwang

Notre problème était que des plugins tiers essayaient de s’intégrer automatiquement à notre délégué d’application. Pour nous, c'était CleverTap (la fonction autoIntegrate()).

1
Roy Kolak

Ne rien faire Il suffit de définir le clientID lors du lancement de l'application. Comme dans le code ci-dessous:

importer FBSDKLoginKit importer GoogleSignIn importer GGLCore

@UIApplicationMain Class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {


    var ConfigError : NSError?
    GGLContext.sharedInstance().configureWithError(&ConfigError)
    assert(ConfigError == nil, "Error Configuration with Google services: \(ConfigError)")
    GIDSignIn.sharedInstance().clientID = "679401366566-8107g2n11hpnqas58m9v8rk7hl2lgl7s.apps.googleusercontent.com" // Here You Have To Change Your App ID

    let fbDelegate = FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    print("DidFinish")

    return fbDelegate
}
0
MRizwan33