我在flutter应用程序中使用iOS的APNS(使用Swift)设置了推送通知。当应用程序从AWS Pinpoint收到推送通知时,didReceiveRemoteNotification将被触发。但是,当用户点击通知时,其他任何方法都不会触发。一旦处理了关于推送通知的用户操作,就可以使用openUrl调用方案以在应用程序上指定路由。
我已经尝试通过在Xcode的功能中禁用/启用后台模式。还验证了功能中的推送通知已打开。 Pinpoint使用APNS将通知发送到iOS,使用Firebase将通知发送到Android,效果很好。
还尝试将iOS目标版本设置为10.0、11.0和12.0
UNUserNotificationCenter.current()。delegate =自我 在didFinishLaunchingWithOptions中声明并导入了UserNotifications
当我点击推送通知时,它会在控制台中打印出来:
警告:UNUserNotificationCenter代表收到了对-userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:的调用:但从未调用完成处理程序。
有效负载:
[AnyHashable("aps"): {
alert = {
body = "BODY";
title = "TITLE";
};
badge = 0;
"content-available" = 1;
"mutable-content" = 0;
sound = default;
}]
代码
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let userInfo = notification.request.content.userInfo
// Print full message.
print(userInfo)
// Change this to your preferred presentation option
completionHandler([])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
// Print full message.
print(userInfo)
completionHandler()
}
}
didReceive预计将在用户点击推送通知时触发,这在我的情况下不会发生。
有人可以帮助我在用户点击推送通知时如何触发吗?
答案 0 :(得分:0)
我正面临类似的问题。 iOS swift委托方法未触发。看来这些方法必须已声明为公共。
只需更换
func userNotificationCenter
使用
public func userNotificationCenter
也许会帮助某人...