2014-09-21 90 views
1

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

+0

[iphone应用程序启动safari]的可能重复(http://stackoverflow.com/questions/822599/launch-safari-from-iphone-app) – n00bProgrammer 2014-09-21 07:56:58

+0

自定义键盘不使用自己的应用程序上下文,但使用扩展上下文,所以我认为不重复。请重新认识。 – bllakjakk 2014-09-21 08:04:33

+0

@ n00bProgrammer我想从iOS 8扩展而不是从iPhone应用程序启动浏览器。 – 2014-09-21 09:03:48

回答

1

你可以使用NSExtensionContext类的api。 Btw。 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:

重定向从网页视图Safari浏览器试试这个:

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

} 

而且如果需要直接启动本机应用程序使用预定义的方案,例如:

地图://

+0

谢谢,但我也想打开一些应用程序来使用URlScheme – 2014-09-21 09:01:54

+0

也可以在iOS模拟器中测试openUrl? – 2014-09-21 09:04:33

+0

自定义的uri方案也可以用来处理其他应用程序。模拟器的行为也适用于这种情况。 – bllakjakk 2014-09-21 09:12:32