【问题标题】:Open URL scheme from iOS extension从 iOS 扩展打开 URL 方案
【发布时间】:2015-06-21 20:15:34
【问题描述】:

我有这个返回success = NO的代码

[self.extensionContext openURL:[NSURL URLWithString:@"URLApp://"] completionHandler:^(BOOL success) {

     [self.extensionContext completeRequestReturningItems:nil completionHandler:nil];

 }];

所以,当我调试它时,我无法从我的共享扩展中打开包含应用程序。

我已经像这样配置了包含应用程序的主要目标:

我已经从 safari 测试了打开 URLApp://,它对我有用。

我还使用了here 提供的一些示例来了解如何使用 url 方案打开包含应用程序。

【问题讨论】:

  • 可能相关问答:openURL from App Extension.
  • 您使用的网址只有一个方案。您是否尝试过更有效的 URL?喜欢[NSURL URLWithString:@"URLApp://openApp"]
  • @Marc-AlexandreBérubé 我已经回答了我的评论,你怎么看。它对我有用。
  • 该方法不起作用,因为它被设计为不适用于共享扩展。该方法的文档说在 iOS 8 中,只有 Today 扩展点(用于创建 Today 小部件)支持此方法。

标签: ios ios8 ios8-extension ios8-share-extension


【解决方案1】:

我找到了 Julio Bailon 的答案 here

UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
NSString *urlString = @"URLApp://";
NSString * content = [NSString stringWithFormat : @"<head><meta http-equiv='refresh' content='0; URL=%@'></head>", urlString];
[webView loadHTMLString:content baseURL:nil];
[self.view addSubview:webView];
[webView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:2.0];

【讨论】:

  • 这对你真的有用吗?这个答案是几个月前的,a more recent question 建议它在较新版本的 iOS 中不起作用。
  • @TomHarrington,嗯,天哪,但有什么解决方案?不太好,所以如果我没有配置帐户,我可以使用共享扩展将数据发送到服务器,所以我想对用户说 - “打开应用程序登录”。你有什么想法如何提供开放应用功能?
  • 你没有。在您链接到的问题中,编写接受答案的人是开发应用程序扩展的 Apple 工程师之一。 Apple 不希望它以这种方式工作,并且正在关闭人们找到的任何解决方法。向 Apple 提交错误并希望他们更改它。
【解决方案2】:

编辑:好的,这里只是稍微更正一下。就像上面建议的那样,我通过在标签上放置一个按钮和以下代码来实现它:

 NSURL *url = [NSURL URLWithString:@"floblog://"];
 [self.extensionContext openURL:url completionHandler:nil]; 

我将它与“Touch Up Inside”活动相关联。但是,这也会导致应用在用户滚动 Today 视图时启动。

========================================

我遇到了同样的问题。但是,自从release notes 提到 iOS 8 的第一个测试版之后,似乎目前还没有解决方案:

已知问题:openURL 不适用于扩展。

所以我想我们至少要等到 beta 2。

【讨论】:

  • 我们已经过了一段时间的 iOS 8.0 Beta 2。截至本评论发布之日,最新的 iOS 版本为 8.3。但我认为限制(无论是问题还是设计)仍然存在 - 虽然尚未测试。
  • @jweyrich 我回答了我的问题。你怎么看?
  • @MatrosovAlexander 能解决您的问题吗?如果是这样,您可以接受自己的答案。我还建议对您用作参考的原始答案进行投票。这家伙也应该得到奖励:-)
猜你喜欢
  • 2014-11-17
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 2014-05-02
  • 2016-07-15
  • 2013-02-10
  • 1970-01-01
  • 2016-06-19
相关资源
最近更新 更多