Используя модуль 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)
работает по назначению.
, пожалуйста, добавьте свои фрагменты кода – muescha
, какие из методов 'didReceiveRemoteNotification' вы используете? вы используете это [приложение (_: didReceiveRemoteNotification: fetchCompletionHandler:)] (https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application)? – muescha
@muescha, я использую метод, который включает fetchCompletionHandler, но я пробовал оба метода, и ни один из них не работает для меня. Я опубликую свои фрагменты кода сейчас! –