从自定义键盘iOS 8启动浏览器?

从自定义键盘iOS 8启动浏览器?,ios,ios8,Ios,Ios8,我可以在iOS8中使用自定义键盘启动浏览器吗。我创建了自定义键盘并添加了浏览器图标。现在我想在用户点击浏览器时启动它。您可以从NSExtensionContext类使用下面的api。 顺便说一句,NSExtensionContext对象表示从中调用应用程序扩展的主机应用程序上下文 - (void)openURL:(NSURL *)URL completionHandler:(void (^)(BOOL success))completionHandler 以下是一个示例: NSURL *url

我可以在iOS8中使用自定义键盘启动浏览器吗。我创建了自定义键盘并添加了浏览器图标。现在我想在用户点击浏览器时启动它。

您可以从NSExtensionContext类使用下面的api。 顺便说一句,NSExtensionContext对象表示从中调用应用程序扩展的主机应用程序上下文

- (void)openURL:(NSURL *)URL
completionHandler:(void (^)(BOOL success))completionHandler
以下是一个示例:

NSURL *url = [NSURL URLWithString:@"http://www.google.com.com"];
NSExtensionContext *myExtension=[self extensionContext];
[myExtension openURL:url completionHandler:nil];
但有一个陷阱。 每个扩展点确定是否支持此方法,或在何种条件下支持此方法

因此,在这种情况下,您应该使用WebView并在其中加载请求以重定向到浏览器

Edit1:

要从Webview重定向到safari,请尝试以下操作:

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
        //[[UIApplication sharedApplication] openURL:[inRequest URL]];
          [myExtension openURL:url completionHandler:nil];
          return NO;

}
此外,如果您需要直接启动本机应用程序,请使用预定义的方案,如:


映射://

自定义键盘的可能重复项不使用自己的应用程序上下文,而是使用扩展上下文,所以我认为不会重复。请重新验证。@n00bProgrammer我想从iOS 8扩展启动浏览器,而不是从iPhone应用程序启动浏览器。有人得到了解决方案吗?谢谢,但我也想打开一些应用程序来使用URLSchema。我可以在iOS模拟器中测试openUrl吗?自定义uri方案也可以用于处理其他应用程序。此外,模拟器行为在该场景中也有很好的定义。我尝试了以下方式:NSURL*url=[NSURL URLWithString:@];[webView loadRequest:[nsurlRequestWithURL:url]];但它不起作用。它在webview中是打开的链接。但如果我在Safari浏览器中打开上面的链接,它将打开地图应用程序。我尝试了上述解决方案,但在键盘中它不起作用。如果有人获得了解决方案,请提供帮助。