我尝试从扩展程序启动容器应用程序。 (动作扩展) 容器应用程序有一个工作URL方案(例如://),我可以通过在Safari中导航到该URL来验证这一点。
当我尝试使用 - [NSExtensionContext openURL:completionHandler:]启动容器应用程序时,我收到一个不成功的回调,没有任何反应。
iOS 8 Beta 2更改说openURL方法现在应该可以正常工作,但这仍然是一个错误还是我做错了什么?
答案 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)
重要 Apple允许任何Today小部件使用openURL:completionHandler:方法打开小部件自己的包含应用程序。
如果您使用此方法从“今日”小部件中打开其他应用,则您的App Store提交可能需要进行额外审核,以确保符合“今日”小部件的意图。
要了解更多信息,请阅读Apple App App支持页面上链接的App Store评论指南和iOS人机界面指南