Objective-C:从本地通知打开 URL
Posted
技术标签:
【中文标题】Objective-C:从本地通知打开 URL【英文标题】:Objective-C: open URL from local notification 【发布时间】:2014-02-10 23:30:25 【问题描述】:我需要从本地通知中打开一个 URL。 我通过 notification.userInfo 传递 URL,然后通过以下代码检索它:
(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notif
NSLog(@"didReceiveLocalNotification");
NSString *url = [notif.userInfo objectForKey:@"urlMedia"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
当我单击应用程序打开时,但 openURL 不起作用。 不能用本地通知打开网址吗?
【问题讨论】:
网址是什么?是http吗? 它是http URL。问题不在URL,是对的...... 【参考方案1】:在尝试打开它之前,您应该首先检查以确保 UIApplication canOpenURL
。这也将有助于确定问题可能是什么。如果 UIApplication 不知道如何处理给定的 URL,这将返回 NO
。以下是文档具体说明的内容...
返回应用是否可以打开给定的 URL 资源。 此方法保证如果调用 openURL:,将启动另一个应用程序来处理它。它不保证完整的 URL 是有效的。
示例用法:
NSString *urlString = [notif.userInfo objectForKey:@"urlMedia"];
NSURL* url = [NSURL URLWithString:urlString];
if ([[UIApplication sharedApplication] canOpenURL:url])
[[UIApplication sharedApplication] openURL:url];
【讨论】:
如果我尝试使用 openUrl 方法打开,例如通过单击一个按钮,它会起作用。 好的,但是如果您将canOpenURL:
添加到您的application: didReceiveLocalNotification:
实现中,它的返回值是多少?它返回 YES 还是返回 NO?如果它返回 NO 那么这回答了您是否可以从本地通知处理程序中打开 URL 的问题。如果它返回 YES 但没有打开,那么可能还有其他原因导致它无法打开 URL。
我找到了其他信息。如果我将我的应用程序放在后台并单击通知它可以工作(几秒钟后打开 URL,但它可以工作)。如果我关闭我的应用程序(双击 iPhone 按钮后滑动),则不会触发 didReceiveLocalNotification !!!
酷,很高兴你能弄明白。您应该回答自己的问题并将其标记为已接受的答案,以便将来您发现此问题的其他人更容易确定解决方案是什么。以上是关于Objective-C:从本地通知打开 URL的主要内容,如果未能解决你的问题,请参考以下文章
Objective-c中如何基于uiswitch ON/OFF案例实现删除和重新调度本地通知