在我的应用中,我目前使用此代码运行某些事件后更新应用程序徽章:
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
然而,无法从WatchKit或Widget调用[UIApplication sharedApplication]。我的小部件有没有办法通过其他方式更新应用程序徽章?
我尝试使用像这样的后台提取。当我从Xcode明确地“模拟背景提取”时,徽章会更新。但在实际设备上,后台提取永远不会被调用?另一个想法是调用后台提取命令?
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
// Background Fetch
[[GlobalNotifications sharedInstance] setApplicationBadge];
completionHandler(UIBackgroundFetchResultNewData);
}
感谢您对此有任何见解。
答案 0 :(得分:0)
您是正确的,只能从iOS主应用程序调用scheduleLocalNotification。对于手表应用程序,如果您使用的是watchOS 2,则可以告诉iOS应用程序使用WatchConnectivity在后台安排通知。我建议使用WCSession方法sendMessage来安排通知。
在watchOS 1中,您可以使用openParentApplication方法:
// On the watch extension
[InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) {
// handle response from phone
}];
// In the AppDelegate of the phone:
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
// TODO: Schedule notification here...
NSDictionary *response = // Your custom response
reply(response);
}
我不知道如何通过其他类型的应用扩展程序(例如今天的扩展程序)与父应用程序进行此类通信。