2016-08-23 17 views
12

Mam aplikację w sklepie z aplikacjami, która działała idealnie dobrze, aż do pierwszych kilku betów iOS 10 (nie jestem do końca pewna, który z nich). Działa również doskonale na iOS 9.3.Google Sign In nie działa na iOS 10 Beta 7 z Xcode 8 beta 6

Jednak nie testuję na iOS 10 beta 7, a logowanie google jest całkowicie zepsute. Używam najnowszej wersji GIDSignIn z cocoapods.

Oto mój kod:

[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]; 

Jak to wygląda na urządzeniu:

screenshot 1

To tylko pozostaje zatrzymany w takim stanie.

Jeśli kliknę przycisk odświeżania u góry, spróbuję odświeżyć i utknąć tutaj na zawsze.

screenshot 2

Kliknięcie na przycisk Gotowe wysyła mnie z powrotem do aplikacji.

Brak błędów zarejestrowanych w konsoli.

Jednak po uruchomieniu tej samej aplikacji na symulatorze iOS 10, safari view controller nawet się nie otwiera. Nic się w ogóle nie dzieje. Ale dzienniki konsoli to długo gadatliwy rzeczy z których następujące wydaje się najbardziej „pożyteczne” rzeczy, ale nie mam pojęcia, co się dzieje:

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)] 

UWAGA: iOS 9.3 działa idealnie. Zdarza się też na wszystkich urządzeniach - testowanych na iPhone'ach 6s i iPhone'ach 5s.

+0

to nadal powtarzalne z iOS 10.0.2, nie tylko wersje beta –

Odpowiedz

1

Nie jestem pewien, czy to jest to, co inni ludzie stoją, ale rozwiązałem go, dodając [self.view layoutIfNeeded]. Wiem, że to dziwne, ale to właśnie dla mnie zadziałało, sam nie jestem pewien dlaczego.

Korzystałem z niestandardowego kontenera widokowego, w którym jako dziecko pokazywałem kontroler logowania logowania Google. Tak więc przed dodaniem niestandardowego kontrolera widoku do kontenera, musiałem wykonać [self.view layoutIfNeeded], ponieważ w przeciwnym razie układ widoku nie został jeszcze ustawiony, więc sdk google prawdopodobnie używa szerokości/wysokości gdzieś w środku.

Nie jestem pewien, czy to jest właściwe rozwiązanie, ale wydaje się, że naprawiłem mój problem.

9

Google SignIn Przykładowy projekt iOS również ma ten sam problem.

Zwraca:

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

Wydaje się to być błąd.

4

jestem (jeszcze) za pomocą Google+ SDK do logowania (1.7.1), a także uszkodzony na iOS 10 beta 7. myślałem o przeprowadzce do GIDSignIn od GPPSignIn jest przestarzała. ale myślę, że będę czekać na kolejną wersję beta ...

+0

następna beta może być wydaniem Gold Master, mam nadzieję, że zostanie to naprawione do tego czasu. W przeciwnym razie będziemy mieć wadliwą aplikację w ostatecznej wersji systemu iOS :( –

1

Jestem w stanie znaleźć rozwiązanie w moim przypadku, poprawiając mój kod, aby poprawnie przedstawić podgląd.Zanim otrzymałem to ostrzeżenie, ale je zignorowałem:

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

, dopóki nie zobaczyłem odpowiedzi Pranoya C. Mój kod jest skonstruowany w bardzo podobny sposób, w jaki kontener widoku służy do prezentacji podstron zawierających przycisk Google. To nie było prawidłowe używanie pojemnika do przedstawienia podglądu. Więc po Apple's guide, zwłaszcza ten blok:

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

Gdy ostrzeżenie zniknęło, Google zaczął działać poprawnie.

Jeśli chodzi o główną przyczynę tego problemu, nadal nie jestem do końca pewny, ale ostrzeżenie wydaje się być wskazówką. Ma to związek z odłączonymi kontrolerami widoku. (Nie jestem bardzo doświadczony w kodowaniu iOS, więc jeśli ktoś ma więcej wiedzy na temat widoków, zobacz kontrolerów, nie przejmuj się.)

+0

Twoje rozwiązanie jest poprawne, musiałem zrobić podobne rzeczy, aby naprawić moje. Zaskakująco to działało dobrze w iOS 9 i zepsuło się w 10. Ale myślę, że robili coś niewłaściwego (przyczynę ostrzeżenia), więc powinniśmy się spodziewać, że i tak się złamie Dobrze, że naprawiłeś to! Ps. witamy w stosie przepełnienia! :) –

1

Naszym problemem były wtyczki innych firm próbujące automatycznie zintegrować się z naszym uczestnikiem aplikacji. Dla nas była to CleverTap (funkcja autoIntegrate()).

+0

Mam do czynienia z tym samym problemem z logowaniem do Facebooka i mam zintegrowany CleverTap . Próbowałem komentować autoIntegrate z clevertap. Ale nie udało się rozwiązać. Dowolny pomysł ? – JiteshW

+0

tak. To był też mój problem. I rozwiązany przez usunięcie tej metody i ręczne skonfigurowanie –

2

Włącz "Udostępnianie pęków kluczy" w zakładce Możliwości obiektu docelowego i będzie działać.

+1

to nie ma nic wspólnego z tym konkretnym problemem. –

+0

@PranoyC Tak, tak, miałem ten sam problem i to rozwiązało. Google przechowuje informacje o logowaniu w udostępnionym pęku kluczy aplikacji, więc jest trwały, aw aplikacjach na iOS 10 domyślnie nie ma do tego dostępu. –

+0

W moim przypadku: wystąpił błąd: "Error Domain = com.google.GIDSignIn Code = -2" błąd keychain "UserInfo = {NSLocalizedDescription = błąd keychain}" to było rozwiązanie, po prostu włączenie funkcji udostępniania klucza. Dzięki Dylan Diamond! –

0

Nie ustawiaj identyfikatora klienta podczas uruchamiania aplikacji. Biorąc pod uwagę, jak w poniższym kodzie:

import FBSDKLoginKit import GoogleSignIn import GGLCore

@UIApplicationMain klasa 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 
} 
Powiązane problemy