2017-01-25 5 views
1

Используя модуль TwilioChatClient, я успешно зарегистрировал свое приложение Twilio Programmable Chat для получения уведомлений APN.iOS Swift Twilio Programmable Chat Push Уведомления

Однако, из того, что я могу сказать, эти уведомления создаются после вызова client.register(withToken: deviceToken) на экземпляр клиента TwilioChatClient, а НЕ через метод AppDelegate приложения didReceiveRemoteNotification. Еще страннее, didReceiveRemoteNotification вызывается, но только тогда, когда приложение находится в активном состоянии, а не в фоновом состоянии, где я хотел бы выполнить некоторые операции.

Кто-нибудь знает, где и как создаются эти уведомления, или почему didReceiveRemoteNotification вызывается только в активном состоянии? Среди прочего, я хотел бы увеличить номер значка значка приложения с каждым уведомлением, отправленным клиентом.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
    print("Registered for notifications"); 
    if UserUtils.client?.userInfo != nil { 
     print("Has info"); 
     UserUtils.deviceToken = deviceToken; 
     UserUtils.client?.register(withToken: deviceToken) 
    } else { 
     print("No info"); 
     updatedPushToken = deviceToken as NSData? 
    } 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    print("Received a notification"); 
    if UIApplication.shared.applicationState != .active { 
     print(userInfo); 
     UserUtils.client?.handleNotification(userInfo); 
     UIApplication.shared.applicationIconBadgeNumber += 1; 
     if UserUtils.client?.userInfo != nil { 
      print(userInfo); 
      let jsonNotification = JSON(userInfo["aps"]) 
      let alert = jsonNotification["alert"].stringValue + "\"}"; 
      print(JSON.init(parseJSON: alert)["body"]); 
     } else { 
      print(userInfo); 
      let jsonNotification = JSON(userInfo["aps"]) 
      let alert = jsonNotification["alert"].stringValue + "\"}"; 
      print(JSON.init(parseJSON: alert)["body"]); 
     } 
    } else { 
    } 
} 

, где client.register(withToken: deviceToken) работает по назначению.

+0

, пожалуйста, добавьте свои фрагменты кода – muescha

+0

, какие из методов 'didReceiveRemoteNotification' вы используете? вы используете это [приложение (_: didReceiveRemoteNotification: fetchCompletionHandler:)] (https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application)? – muescha

+0

@muescha, я использую метод, который включает fetchCompletionHandler, но я пробовал оба метода, и ни один из них не работает для меня. Я опубликую свои фрагменты кода сейчас! –

ответ

0

Twilio разработчик евангелист здесь.

Я разговаривал с программируемой командой чата, и это то, что я узнал:

  • application(_:didReceiveRemoteNotification:fetchCompletionHandler:) для бесшумных уведомлений в фоновом режиме, которые выполняют обработку только фон (то есть, с "content-available": 1 набором в уведомление APNS). Программируемый чат отправляет уведомления, которые отображают информацию пользователю, поэтому он не будет запущен в фоновом режиме.
  • Уведомления могут обновлять счет значка, но для этого вам не нужно делать, это требует от вас другого что в настоящее время мы не поддерживаем уведомление, однако сейчас мы делаем это для добавления этой поддержки.
  • Если вы хотите как показать уведомление, так и выполнить дополнительную фоновую обработку, это не поддерживается в обычных уведомлениях, однако это поддерживается с iOS 10's service extensions. Программируемая чат не поддерживает тех, кто либо, но опять же, в настоящее время работает, так что вы можете увидеть, что скоро

Держите глаз на Programmable Chat Changelog эти дополнения.

Дайте мне знать, если это поможет вообще.

 Смежные вопросы

  • Нет связанных вопросов^_^