2016-09-19 1 views
2

У меня есть эта проблема с Google Cloud Messaging (GCM) после рефакторинга в Swift 3. Может ли кто-нибудь помочь?Невозможно преобразовать значение типа '(String !, NSError!) ->()' в ожидаемый тип аргумента 'GGLInstanceIDTokenHandler!'

Я получил эту ошибку: Невозможно преобразовать значение типа - ожидаемого типа аргумента '>() (строка !, 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) 
} 

Это registrationHandler:

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

enter image description here

+0

Похоже, что подпись 'registrationHandler' изменилась. Повторите метод (ы), чтобы получить фактическую подпись с завершением кода. – vadian

+0

@vadian: он показывает регистрациюHandler лишен :( – Kaptain

+0

Тогда посмотрите в документации для замены. – vadian

ответ

4

Изменение повторно gistrationHandler до

func registrationHandler(_ registrationToken: String?, error: Error?) { 
    // … 
} 
+0

это не работает – Ranjit

+0

@ Давид, это не работает для меня –

1

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

func registrationHandler(registrationToken: Optional<String>, error: Optional<Error>) { 
    // ... 
}