使用Flutter App在iOS中未触发UNUserNotificationCenterDelegate didReceive

时间:2019-06-26 19:05:08

标签: ios xcode flutter apple-push-notifications aws-pinpoint

我在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预计将在用户点击推送通知时触发,这在我的情况下不会发生。

有人可以帮助我在用户点击推送通知时如何触发吗?

1 个答案:

答案 0 :(得分:0)

我正面临类似的问题。 iOS swift委托方法未触发。看来这些方法必须已声明为公共。

只需更换

func userNotificationCenter

使用

public func userNotificationCenter

也许会帮助某人...