NSExtensionContext openURL不起作用

时间:2014-07-02 18:11:14

标签: ios objective-c ios-app-extension

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

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

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

4 个答案:

答案 0 :(得分:10)

使用此代码在Today Extension中为我工作:

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

但是,它可能无法在Action Extensions中使用。来自documentation

  

每个扩展点确定是否支持此方法,或   在哪种条件下支持这种方法。在iOS 8.0中,只有Today扩展点支持此方法。

答案 1 :(得分:3)

我的解决方案是创建UIWebView并使用其中的网址加载请求

答案 2 :(得分: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];

答案 3 :(得分: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:方法打开小部件自己的包含应用程序。

如果您使用此方法从“今日”小部件中打开其他应用,则您的App Store提交可能需要进行额外审核,以确保符合“今日”小部件的意图。

要了解更多信息,请阅读Apple App App支持页面上链接的App Store评论指南和iOS人机界面指南