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案例实现删除和重新调度本地通知

iOS5本地通知自定义声音xcode iOS iPhone Objective-c Xcode

Objective-C:从 JSON 文件读取远程通知太慢

单击本地通知时无法打开现有的正在运行的活动

从本地文件或 url 打开一个 IO 流

当使用新的通知机制点击本地通知时,如何打开应用程序?