例如:Facebook应用程序基本上只是一个使用html5的webview,那么当你试图在某人的墙上写东西时,它如何链接到默认的消息编辑器之类的东西?我知道应用程序的一部分可能正在使用Three20。那么他们只是使用他们的应用程序URL链接到应用程序的那一部分? (例如,fb:// profile / 122605446)。
答案 0 :(得分:3)
是的,您可以使用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;
}
}
答案 1 :(得分:2)
是的,你可以这样做。查看UIWebViewDelegate Protocol Reference,特别是webView:shouldStartLoadWithRequest:navigationType:
NSURLRequest
会在点击链接时通知您。您可以在链接中找到特定的args&根据args,您可以自定义处理在iOS应用中打开的视图。或者如果你想阻止加载请求,你只需要在这个方法上返回NO
。
答案 2 :(得分:1)
UIWebViewDelegate有一个名为webView:shouldStartLoadingRequest:navigationType
的方法。您可以使用此方法拦截某些链接,按钮点击等。您也可以通过这种方式创建自己的链接:
<a href="myApp://dosomething">Click!</a>
委托方法的第二个参数现在有一个NSURLRequest,其URL是“myApp:// dosomething”。
答案 3 :(得分:0)
您只需在应用中注册多个网址类型(或只是一个,fb://)。
然后您解析网址并根据您收到的网址打开应用程序的不同部分。
有关概述和教程的详细信息,请参阅http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html。
(在这种情况下,应用程序中的视图用HTML5编写并不重要。)