无论如何通过webview创建一个链接,打开你的应用程序的一部分?

时间:2012-07-02 16:47:57

标签: iphone ios three20

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

4 个答案:

答案 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编写并不重要。)