ios - 当 iPhone 配套应用程序终止时,Apple Watch 通知操作不起作用 watch OS 5.3.2
问题描述
我正在开发支持手表的 iOS 应用程序,以下是我的担忧。
观看操作系统 - 5.3.2 和 iOS 13.1
我在手表应用程序中遇到通知操作问题。当 iPhone 应用程序终止时,如果我在 watch 中收到通知,如果我点击操作,则没有任何反应。
我正在转发推送通知和用户通知操作,我正在注册用户通知。
如下
// this I will call in iPhone app code in did finishlaunching with options.
func registerForPushNotifications(withUserInfo userInfo: [AnyHashable: Any]?) {
if #available(iOS 10.0, *) {
self.requestAuthorization(withUserInfo: userInfo)
} else {
registerUserNotificationSettings(withUserInfo: userInfo)
UIApplication.shared.registerForRemoteNotifications()
}
}
func registerUserNotificationSettings() {
let approveAction = UIMutableUserNotificationAction()
approveAction.title = NSLocalizedString("Approve", comment: "Notification approve button title")
approveAction.identifier = "approve"
approveAction.isDestructive = false
approveAction.activationMode = .background
approveAction.isAuthenticationRequired = true
let denyAction = UIMutableUserNotificationAction()
denyAction.title = NSLocalizedString("Deny", comment: "Notification deny button title")
denyAction.identifier = "deny"
denyAction.isDestructive = true
denyAction.activationMode = .background
denyAction.isAuthenticationRequired = true
let signInCategory = UIMutableUserNotificationCategory()
signInCategory.setActions([approveAction, denyAction], for: .default)
signInCategory.identifier = "pushotp"
let categories = NSSet(object: signInCategory) as? Set<UIUserNotificationCategory>
let settings = UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: categories)
DispatchQueue.main.async(execute: {
UIApplication.shared.registerUserNotificationSettings(settings)
})
}
场景
当 iPhone 应用程序在后台并且 iPhone 被锁定并且手表在后台时。如果我从服务器推送推送通知,手表会显示带有两个操作的通知横幅,如果我点击任何一个操作,它工作正常。
当 iPhone 应用程序被杀死并立即锁定 iPhone 如果我发送 pushnotification ,手表会显示带有两个操作的通知横幅,如果我点击任何一个操作它工作正常。
当 iPhone 应用程序被杀死并且 iPhone 被锁定时,让手表和 iPhone 都闲置一个小时。然后我将激活手表并从服务器推送通知,现在手表显示带有两个操作的横幅,现在如果我点击这些操作它不起作用。
如果你们告诉我我必须做的正确事情是什么,那就太好了。
解决方案
为确保在第 3 个用例中执行操作,请确保Notification Payload应具有contentAvailable属性为YES。这样应用程序将在后台启动。并且它将相应地更新通知用户操作。
推荐阅读
- javascript - ReactJs useState 钩子进入无限循环
- firebase - 将 firebase 子集合中的数据提取到 React Native 中的 list.item 中
- sql - 从 SQL Server 中的字符串中查找最大值
- javascript - 从 TinyURL 的缩短方法捕获响应时出错
- excel - 用于生成数据驱动报告并发送给外部用户的工具
- html - Foundation 6 均衡器初始负载将高度重置为 0,我该如何防止这种情况?
- ssh - 什么可能导致 Ansible 无法在 sftp scp 和管道上传输文件
- c# - 如何使用 c#asp.net 循环位于中继器控件内的 div 部分?
- php - 如何检查条带定期付款是否失败
- openshift - 如何在 Openshift 中从 qemu-kvm img 文件和自定义内核创建 VM?