有没有办法通过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: //做一点事”。