有没有办法通过webview创建一个链接来打开你的应用程序的一部分?
例如:facebook应用程序基本上只是一个使用html5的webview,那么当您尝试在某人的墙上写东西时,它如何链接到默认消息编辑器之类的东西?我知道应用程序的一部分可能使用Three20。那么他们只是使用他们的应用程序url链接到应用程序的那部分? (例如fb:// profile/122605446)。有没有办法通过webview创建一个链接来打开你的应用程序的一部分?
是的,你可以使用UIWebView
委托方法webView:shouldStartLoadWithRequest:navigationType:
方法做到这一点。您将需要使用自定义URL方案来触发您的自定义代码,否则就让它正常通过。所以在你的例子中fb
是自定义方案。使用该URL的其余部分导航到配置文件屏幕为用户122605446.
下面是一些示例代码,以帮助:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *scheme = [url scheme];
if ([scheme isEqualToString:@"fb"]) {
//Do something with the rest of the url and take any action you like.
}
else {
return YES;
}
}
您可以在应用程序中简单地注册一些url类型(或者只是一个,fb://)。
然后,根据您收到的URL解析url并打开应用程序的不同部分。
请参阅http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html以获得良好的概述和教程。
(这并不重要,在应用程序的意见都写在HTML5在这种情况下)。
是的,你能做到这一点。看看UIWebViewDelegate Protocol Reference,具体是webView:shouldStartLoadWithRequest:navigationType:
NSURLRequest
会让你知道什么时候点击链接。您可以在链接&中拥有特定的参数,具体取决于您可以自定义处理在iOS应用中打开哪些视图的参数。或者如果您想阻止请求加载,则只需在此方法上返回NO
。
UIWebViewDelegate有一个名为webView:shouldStartLoadingRequest:navigationType
的方法。您可以使用此方法来拦截某些链接,按钮点击等。您也可以创建您自己的链接:
<a href="myApp://dosomething">Click!</a>
委托方法的第二个参数现在有一个NSURLRequest,其URL为“myApp: //做一点事”。