2016-09-02 22 views
8

Integruję logowanie Google w mojej aplikacji ios Swift. Śledzę oficjalnymi instrukcjami na stronie dewelopera google tutaj (https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift)Użycie nierozwiązanego identyfikatora "GGLContext"

Oto moja Bridging Header:

#ifndef Header_h 
#define Header_h 


#endif /* Header_h */ 

#import <CommonCrypto/CommonCrypto.h> 
#import <FBSDKCoreKit/FBSDKCoreKit.h> 
#import <FBSDKLoginKit/FBSDKLoginKit.h> 
#import <GoogleSignIn/GoogleSignIn.h> 

Kiedy zadzwonić do linii w moim AppDelegate.swift funkcji, która ma

GGLContext.sharedInstance().configureWithError(&configureError) 

w tym. Podane są następujące informacje: Każda pomoc jest doceniana.

+0

Spróbuj odpowiedź: http://stackoverflow.com/a/35552770/3535399 –

Odpowiedz

17

Google/* strąty są przestarzałe, należy zamiast tego użyć pod GoogleAnalytics lub pod GoogleSignIn. W tych strąkach nie można znaleźć GGLContext, ponieważ już nie istnieje, ponieważ nie wymaga już pliku GoogleInfo-Service.plist dla Analytics lub SignIn.

Dla signin należy użyć ClientID który został uprzednio otrzymanej w pliku GoogleInfo-Service.plist zainicjować

GIDSignIn.sharedInstance().clientID = kClientID

lub jeśli używasz Firebase

GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID

W przypadku Analytics należy użyć identyfikatora trackera, który został wcześniej uzyskany w usłudze GoogleInfo o nazwie .plist plik lub w panelu analityki zainicjować

let tracker = GAI.sharedInstance().tracker(withTrackingId: kTrackerID)

Google Analytics docs

+0

Dziękuję. Czy możesz wskazać na dokumentację, która to wyjaśnia? – derpoliuk

+0

Dokumentacja Google na iOS wydaje się być przestarzała, wersja Analytics pokazuje ten sam proces, który opisałem, ale Google SingIn ma mieszankę starej i nowej metody. –

+0

Tak, podczas pisania mojego komentarza przeglądałem dokumenty. Dziękuję za tę odpowiedź, była bardzo pomocna. – derpoliuk

19

Wewnątrz Podfile.h,

zastąpić

pod 'GoogleSignIn' 

z

pod 'Google/SignIn' 

Wewnątrz BridgingHeader.h pliku dodać następujące dwie linie:

#import <GoogleSignIn/GoogleSignIn.h> 
#import <Google/Core.h> 

Wewnątrz AppDelegate.swift,

zastąpić

import GoogleSignIn 

z

import Google 

To działało w moim przypadku.

W rzeczywistości pod "Google/SignIn" ma wymagane zależności od Google potrzebne do korzystania GGLContext. Nie są one dostępne podczas instalowania kokosowych kapsuł z użyciem pod 'GoogleSignIn'

+0

@ Thalatta: Zgłaszam moją odpowiedź, jeśli to pomogło. Dzięki :) –

+6

Niewiarygodne, że nawet dzisiaj dokumentacja jest nieaktualna. Thx za to: D –

+0

@ andres.cianio Wiem, dzięki Zbawicielowi "StackOverflow" :) –

3

Odpowiedź Benjamina Jimenez był prawidłowy, a nie jeden oznaczony jako „poprawne”, ponieważ sugeruje, użyć przestarzałej wersji bibliotek zamiast przejść do nowej wersji i odpowiednio zaktualizować projekt: https://stackoverflow.com/a/46858690/3506788

Jeden mały dodatek do roztworu jednak: jeśli używasz Firebase, upewnij się, że zainicjować Firebase przed skorzystaniem z tej linii:

GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID 
+0

Nie zapewnia to odpowiedzi na pytanie. Gdy masz już wystarczającą [reputację] (https://stackoverflow.com/help/whats-reputation), będziesz mógł [komentować dowolny wpis] (https://stackoverflow.com/help/privileges/comment); zamiast tego [dostarczaj odpowiedzi, które nie wymagają wyjaśnień od pytającego] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-zamiast). - [Z recenzji] (/ opinia/niskiej jakości-posts/17893176) –

+0

Zapewnia rozwiązanie problemu, a dokładniej wyjaśnienie komentarza, który jest początkiem rozwiązania. Wskazuje również, że wpis oznaczony jako "rozwiązanie" absolutnie nie jest jeden i złą praktyką (edycja: "_was_ oznaczono jako rozwiązanie", ponieważ została zmieniona od czasu mojego pierwszego posta). System, który zapobiega komentowaniu odpowiedzi, gdy reputacja jest zbyt niska, wskazuje na moje ograniczenia. To nie jest temat dyskusji. Możemy dyskutować o tym prywatnie, zamiast podejmować temat. – Toka

+0

Ten komentarz był bardzo pomocny. –