在 watchkit 中接收本地通知

Posted

技术标签:

【中文标题】在 watchkit 中接收本地通知【英文标题】:Receive Local Notification In watchkit 【发布时间】:2015-04-08 11:25:59 【问题描述】:

我已经设置了本地通知如下:

-(void)startLocalNotification 


    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];

我在 iPhone 模拟器上收到通知。但它不会触发 watchkit 应用程序的通知。我在 watchkit 扩展中的 NotificationController.m 中使用以下方法 -

- (void)didReceiveLocalNotification:(UILocalNotification *)localNotification withCompletion:(void (^)(WKUserNotificationInterfaceType))completionHandler

     NSLog(@"Notification Received ..");
    completionHandler(WKUserNotificationInterfaceTypeCustom);


谁能告诉我为什么我没有在 watchkit 应用中收到本地通知。

提前致谢。

【问题讨论】:

【参考方案1】:

请参阅 Apple Watch 编程指南HERE

When one of your app’s local or remote notifications arrives on the user’s iPhone, ios decides whether to display that notification on the iPhone or on the Apple Watch.

因此您无需担心在 Watch 上发送通知,iOS 会为您完成。

无论如何,如果您只想在手表上发送通知,您可以使用Darwin Notification Concepts,但请注意有一些限制,您可以查看给定的链接。

App和扩展之间也可以使用shared container进行通信。

希望对你有所帮助。

【讨论】:

另外请记住,模拟器目前不支持本地通知。 iPhone 或 iPad 模拟器支持本地通知。 但不是在 WatchKit 上。它在文档和论坛中有所提及。 详细说一下,如果你想触发手表接收本地通知,我相信你只要在通知到来时让iPhone休眠就可以了。 所以我们只能在 iWatch 中接收远程通知??

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

如何使用 WatchKit 触发通知

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

Swift - 在后台在应用程序中接收本地通知时执行功能

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

如何在前台接收推送通知时显示颤振本地通知?

React Native - 在接收本地推送通知时清除以前的推送通知