WatchOS 3 (XCode 8b6) 上的后台通知
Posted
技术标签:
【中文标题】WatchOS 3 (XCode 8b6) 上的后台通知【英文标题】:Background Notifications on WatchOS 3 (XCode 8b6) 【发布时间】:2016-08-18 19:55:34 【问题描述】:我在手表上使用前台通知:
class WorkoutInterfaceController: WKInterfaceController,
UNUserNotificationCenterDelegate
设置委托:
UNUserNotificationCenter.current().delegate = self
接收前台通知:
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Swift.Void)
print("Received Notification .....")
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
let completionSound: UNNotificationPresentationOptions = [.sound, .alert]
completionHandler(completionSound)
添加通知:
let content: UNMutableNotificationContent = UNMutableNotificationContent()
content.title = "TITLE"
content.subtitle = "sub title"
content.body = "message body"
content.sound = UNNotificationSound.default()
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: duration, repeats: false)
let request = UNNotificationRequest(identifier: restOverIdentifier,
content: content,
trigger: trigger)
UNUserNotificationCenter.current().add(request)
(error) in // ...
我在 sim 卡和设备上都试过了,但在 sim 卡被锁定或在主屏幕上或手表上,如果您不移动手臂,屏幕变黑时却没有收到通知。
我正在寻找的只是一个简单的哔声,我什至不需要通知警报屏幕。
如果您有对此有用的东西,请发布代码或确认此功能在手表上不起作用。
谢谢
格雷格
【问题讨论】:
【参考方案1】:watchOS 3 存在一个错误,即只显示第一个通知:
暂时将我的代码更改为:
let id: String = WatchNotify.getUUID()
// let request = UNNotificationRequest(identifier: focusWarningIdentifier,
let request = UNNotificationRequest.init(identifier: id,
content: content,
trigger: trigger)
UNUserNotificationCenter.current().add(request)
为 UUID 添加此功能:
class func getUUID() -> String
let uuidObj = CFUUIDCreate(nil)
let uuidString = CFUUIDCreateString(nil, uuidObj)!
return uuidString as String
虽然委托完成处理程序似乎还没有在手表上工作,但似乎可以解决问题。
【讨论】:
以上是关于WatchOS 3 (XCode 8b6) 上的后台通知的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 中为 Apple Watch 添加单元测试?
Xcode 9,watchOS4,不再显示 15% 的后台 CPU 限制?
如何在 WatchKit 扩展目标(XCode7 beta 6)中重置 watchOS 部署目标
WatchOS 动态通知不适用于 Xcode 11.1 及更高版本 - 未调用 didReceive