使用TwilioChatClient窗格,我已成功地將我的應用程序註冊到Twilio Programmable Chat以接收APN通知。iOS Swift Twilio可編程聊天推送通知
但是,據我所知,這些通知是在實例化TwilioChatClient客戶端上調用client.register(withToken: deviceToken)
後創建的,而不是通過應用程序的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的方法 - 但我已經嘗試了這兩種方法,並且它們都不適用於我。我現在將發佈我的代碼片段! –