5

我正在尝试从扩展启动容器应用程序。(一个动作扩展)容器应用程序有一个有效的 URL 方案(example://),我可以通过在 Safari 中导航到该 URL 来验证这一点。

当我尝试使用 -[NSExtensionContext openURL:completionHandler:] 启动容器应用程序时,我收到一个不成功的回调并且没有任何反应。

iOS 8 Beta 2 更改说 openURL 方法现在应该可以工作,但这仍然是一个错误还是我做错了什么?

4

4 回答 4

10

它使用以下代码在 Today Extension 中为我工作:

NSExtensionContext *myExtension=[self extensionContext];
[myExtension openURL:[NSURL URLWithString:@"http://google.com"] completionHandler:nil];

但是,它可能不适用于操作扩展。从文档中:

每个扩展点决定是否支持这种方法,或者在什么条件下支持这种方法。在 iOS 8.0 中,只有 Today 扩展点支持这种方法。

于 2014-07-05T09:24:50.720 回答
3

我的解决方案是创建一个UIWebView并加载一个带有 url 的请求

于 2014-07-14T15:34:22.477 回答
0

如果使用 unicode 字符,则必须转换为 utf8 字符串。

NSString* toUtf8= [yourString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString *urlString = [NSString stringWithFormat:@"openMap://?lat=%f&lon=%f&%@",[self.koordX floatValue],[self.koordY floatValue],toUtf8];

[self.extensionContext openURL:[NSURL URLWithString:urlString]  completionHandler:nil];
于 2014-12-01T11:51:55.123 回答
0

https://developer.apple.com/library/prerelease/ios/documentation/Foundation/Reference/NSExtensionContext_Class/index.html#//apple_ref/occ/instm/NSExtensionContext/openURL:completionHandler

重要 Apple 允许任何 Today 小部件使用 openURL:completionHandler: 方法打开小部件自己的包含应用程序。

如果您使用此方法从 Today 小部件打开其他应用程序,您的 App Store 提交可能需要额外审查,以确保符合 Today 小部件的意图。

要了解更多信息,请阅读 App Store Review Guidelines 和 iOS Human Interface Guidelines,链接到 Apple 的 App Review Support 页面

于 2015-11-08T08:25:10.843 回答