【发布时间】:2019-10-19 19:16:34
【问题描述】:
我正在使用 UserNotification 框架为带有本地通知的 IOS 应用程序(带有目标 C)开发一项功能。
到目前为止,我已经能够安排一个通知并且它可以正确显示。当我遇到可操作通知类型(带有类别和操作)的问题时,我设法显示带有操作的通知。我实际上可以正确实现UNUserNotificationCenterDelegate 并验证是否正在调用didReceiveNotificationResponse 方法,并且确实如此。但我的问题是我试图使用这样的 URL 方案从那里打开地图应用程序
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler{
NSString * mapsURL = @"http://maps.apple.com/?saddr=35.6813023,139.7640529&daddr=33.4657901,132.6201192";
//if ( [response.actionIdentifier isEqualToString:@"GoToMaps" ]) {
//Display the map with URL
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mapsURL] options:@{} completionHandler:^(BOOL success) {
NSLog(@"BOOL value: %d",success);
}];
//}
completionHandler();
}
注意:我正在模拟器中测试这个应用程序。
但这不起作用,因为当应用程序处于后台时,这会给我在 success arg 上的 0。但是当我在我的应用程序(前台应用程序)中的一个按钮中尝试这个时,这实际上是有效的。
所以我的问题是:
有没有一种方法可以让我从通知中的操作按钮打开不同的应用程序(从安排通知的位置),而不仅仅是地图,我的意思是,无论应用程序是否关闭或在后台运行?
我说的是关闭的应用程序,但苹果的文档说,当用户选择并采取行动时,系统会在后台启动应用程序并通知共享的 UNUserNotificationCenter 对象,该对象会通知其代表。所以它不会真正关闭(不运行)。
【问题讨论】:
-
我一直在研究。我发现如果它不在前台,则无法从另一个打开带有 URL 架构的应用程序
标签: ios objective-c localnotification