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