2016-09-29 5 views
5

application:openURL:options: Methode der App Delegate. Die Methode sollte die -Methode der GIDSignIn-Instanz, , aufrufen, die die URL korrekt verarbeitet, die Ihre Anwendung am Ende des Authentifizierungsvorgangs erhält.Google mehrdeutigen Verweis auf Mitglied 'tiefgestellt' anmelden

Direkt von Firebase Guide-Dokumentation kopiert, aber immer noch Fehler.

func application(application: UIApplication, openURL url: NSURL, options: [String: AnyObject]) -> Bool { 
    return GIDSignIn.sharedInstance().handleURL(url as URL!, sourceApplication: 
     options[UIApplicationOpenURLOptionsSourceApplicationKey] //Error is here 
     //Ambiguous reference to member 'subscript' error is shown. 

     as? String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) 
} 

Antwort

25

Sie haben ein paar Probleme. Die delegierte Methode sollte die folgende Signatur in Swift haben 3:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 

und die ganze Methode wäre:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
} 
+0

ich Thread 1: error Signal SIGABRT in App Delegierter nach dem Ausführen der Anwendung und die google-signin Taste –

+0

Sind '_' &' open' externen Parameternamen klicken? Warum haben 'Optionen' keinen externen Parameternamen? – Honey

+1

@Honey Dies sind die Argument-Labels, die von den Aufrufern der Methode verwendet werden. Das _ _ bedeutet, dass für den Parameter kein Name angegeben ist. Und wenn das Argument keine separate Bezeichnung hat (wie 'Optionen'), dann verwenden Sie den Parameternamen als Argumentbezeichnung. Dies alles ist in Apples "The Swift Programming Language" -Buch für Swift 3 enthalten. – rmaddy

0

Wenn Sie mehrere URL-Systeme zusammen mit Google verwenden anmelden, verwenden Sie es wie folgt :

func application(application: UIApplication, 
       openURL url: NSURL, 
       options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 

    return GIDSignIn.sharedInstance().handle(url as URL!, 
              sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, 
              annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 

} 
Verwandte Themen