1

例如:facebook 应用程序基本上只是一个使用 html5 的 webview,那么当您尝试在某人的墙上写东西时,它如何链接到默认消息编辑器之类的东西?我知道该应用程序的一部分可能正在使用 Three20。那么他们是否只是使用他们的应用程序 url 链接到应用程序的那一部分?(例如 fb://profile/122605446)。

4

4 回答 4

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;    
    }
}
于 2012-07-02T16:56:53.550 回答
2

是的,你可以这样做。查看UIWebViewDelegate Protocol Reference,具体来说webView:shouldStartLoadWithRequest:navigationType:

NSURLRequest在单击链接时通知您。您可以在链接中有特定的参数,并且根据您可以自定义处理要在 iOS 应用程序中打开的视图的参数。NO或者,如果您想阻止加载请求,您只需返回此方法。

于 2012-07-02T16:52:50.837 回答
1

UIWebViewDelegate 有一个名为webView:shouldStartLoadingRequest:navigationType. 您可以使用此方法拦截某些链接、按钮点击等。您也可以通过这种方式创建自己的链接:

<a href="myApp://dosomething">Click!</a>委托方法的第二个参数现在有一个 NSURLRequest,其 URL 是“myApp://dosomething”。

于 2012-07-02T16:53:14.420 回答
0

您可以在您的应用程序中简单地注册多种 url 类型(或仅一种,fb://)。

然后解析 url 并根据收到的 URL 打开应用程序的不同部分。

请参阅http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html以获得良好的概述和教程。

(在这种情况下,应用程序中的视图是否用 HTML5 编写并不重要。)

于 2012-07-02T16:52:17.050 回答