WatchKit 中的本地通知

Posted

技术标签:

【中文标题】WatchKit 中的本地通知【英文标题】:Local Notification in WatchKit 【发布时间】:2017-04-11 16:15:07 【问题描述】:

如何直接从 WatchKit 发送本地通知?甚至可能吗? Apple 文档说,从 Watch 安排的本地通知会直接发送到 Watch,因此似乎必须有办法做到这一点。

ios 中我会这样做: 但是无法从 Watch 共享应用程序....

UILocalNotification *notification = [[UILocalNotification alloc] init];
                                           notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:7];
                                           notification.alertBody = @"This is local notification!";
                                           notification.timeZone = [NSTimeZone defaultTimeZone];
                                           notification.soundName = UILocalNotificationDefaultSoundName;
                                           notification.applicationIconBadgeNumber = 10;
                                           NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"Hello! This is Local Notification!" forKey:@"Notification"];
                                           notification.userInfo = infoDict;
                                           [[UIApplication sharedApplication] scheduleLocalNotification:notification];

【问题讨论】:

使用UserNotifications 框架 【参考方案1】:

在使用最新 SDK 中的通知时,无需访问共享应用程序。从watchOS 3.0+开始,使用UNNotificationCenter(UserNotifications框架的一部分)类的class func current()方法来获取对当前通知中心的引用,然后使用这个对象通过它提交notification requests。

由于与在 iOS 中使用此类没有太大区别,请查看我的其他答案 Using local notifications in iOS。我自己知道的唯一存在的区别是,在 WatchKit 扩展中工作时,您只能触发向 Apple Watch 发送通知。而当从您的 iOS 应用程序中提交通知请求时,系统会决定它应该在哪里发送通知(请参阅apple watch notification documentation)。

【讨论】:

这就是我的猜测。从 iOS 应用触发通知,我很困惑,因为下面的图表:i.stack.imgur.com/3yAsJ.png 显示来自扩展的通知将仅传递到手表。

以上是关于WatchKit 中的本地通知的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WatchKit 触发通知

在自定义 WatchKit 通知上同时显示 alertTitle 和 AlertBody

WatchKit:如何本地化系统提供的 Dismiss 按钮?

Watchkit 通知场景是强制性的吗?

创建后如何将通知场景添加到 WatchKit 目标?

Apple Watch 中的本地通知