Невозможно преобразовать значение типа '(String !, NSError!) ->()' в ожидаемый тип аргумента 'GGLInstanceIDTokenHandler!'

У меня возникла проблема с Google Cloud Messaging (GCM) после рефакторинга в Swift 3. Может ли кто-нибудь помочь?

Я получил эту ошибку: не могу преобразовать значение типа '(String !, NSError!) ->()' в ожидаемый тип аргумента 'GGLInstanceIDTokenHandler!'

Вот:

func application( _ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data ) {

// ...

GGLInstanceID.sharedInstance().tokenWithAuthorizedEntity(gcmSenderID, scope: kGGLInstanceIDScopeGCM, options: registrationOptions, handler: registrationHandler) 
}

И такая же ошибка здесь:

func onTokenRefresh() {
    GGLInstanceID.sharedInstance().token(withAuthorizedEntity: gcmSenderID, scope: kGGLInstanceIDScopeGCM, options: registrationOptions, handler: registrationHandler)
}

Это регистрацияHandler:

func registrationHandler(_ registrationToken: String!, error: NSError!) {
    // ...
}

enter image description here

+2
источник поделиться
2 ответа

Изменить регистрациюHandler на

func registrationHandler(_ registrationToken: String?, error: Error?) {
    // …
}
+4
источник

К сожалению, ответ Дэвида не работает с Swift 3. Однако это делает:

func registrationHandler(registrationToken: Optional<String>, error: Optional<Error>) {
    // ...
}
+1
источник

Связанные вопросы


Похожие вопросы

Посмотрите другие вопросы по меткам или Задайте вопрос