2016-09-29 16 views
5

application:openURL:options: uygulama temsilcisi yöntemine belirsiz başvuruda oturum açın. Yöntem, kimlik doğrulaması işleminin sonunda uygulamanızın aldığı URL'yi düzgün bir şekilde işleyecek olan GIDSignIn örneğinin GIDSignIn örneğinin handleURL yöntemini çağırmalıdır.Google, üye 'temsil'

Doğrudan firebase kılavuz belgelerinden kopyalanmış, ancak yine de hataları vardır.

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

cevap

25

Bazı sorunlarınız var.

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

ve bütün yöntem olacaktır: temsilci yöntemi Swift 3 aşağıdaki imzası bulunmalıdır

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

Ben parçacığı 1 olsun: '_' &' open' harici parametre adları uygulamayı çalıştıran ve google oturum açma düğmesine –

+0

tıkladıktan sonra App Delegesi Signal SIGABRT hatası mı? Neden 'options' harici parametre adı içermiyor? – Honey

+1

@Honey Bunlar, yöntemin arayanları tarafından kullanılan bağımsız etiketlerdir. '_', parametre için bir isim verilmediğini gösterir. Ve eğer argümanın ayrı bir etiketi yoksa ('options' gibi), argüman etiketi olarak parametre ismini kullanırsınız. Bu, Apple'ın Swift 3 için "Swift Programlama Dili" kitabında ele alınmıştır. – rmaddy

0

sen Oturum Google ile birlikte birden fazla URL şemaları kullanıyorsanız, bu gibi kullanmak :

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

}