android自定义协议,Android / iOS-自定义URI /协议处理

编辑5/2014,因为这似乎是一个受欢迎的问题,所以我在回答中添加了很多细节:

Android:

对于Android,请单击单击自定义URI时,请参阅意图过滤器以启动我的活动。

您使用一个意图过滤器:

这将附加到您要启动的活动。 例如:

然后,在您的活动中(如果未运行),将使用在Intent中传递的URI启动活动。

Intent intent = getIntent();

Uri openUri = intent.getData();

如果已经运行,则将在您的活动中调用onNewIntent(),并再次使用该URI。

最后,如果您想在本机应用程序中托管的UIWebView中处理自定义协议,则可以使用:

myWebView.setWebViewClient(new WebViewClient()

{

public Boolean shouldOverrideUrlLoading(WebView view, String url)

{

// inspect the url for your protocol

}

});

iOS:

对于iOS,请在iOS 4上使用URL(通过UIApplicationDelegate的handleOpenURL)启动应用程序,但在iOS 3.2下不能使用。

通过Info.plist键定义您的URL方案,类似于:

CFBundleURLTypes

CFBundleURLName

com.yourcompany.myapp

CFBundleURLSchemes

myapp

然后定义一个处理函数,以在您的应用程序委托中调用

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

// parse and validate the URL

}

如果要在本机应用程序中托管的UIWebViews中处理自定义协议,则可以使用UIWebViewDelegate方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

NSURL *urlPath = [request URL];

if (navigationType == UIWebViewNavigationTypeLinkClicked)

{

// inspect the [URL scheme], validate

if ([[urlPath scheme] hasPrefix:@"myapp"])

{

...

}

}

}

}

对于WKWebView(iOS8 +),您可以改用WKNavigationDelegate和以下方法:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

{

NSURL *urlPath = navigationAction.request.URL;

if (navigationAction.navigationType == WKNavigationTypeLinkActivated)

{

// inspect the [URL scheme], validate

if ([[urlPath scheme] hasPrefix:@"myapp"])

{

// ... handle the request

decisionHandler(WKNavigationActionPolicyCancel);

return;

}

}

//Pass back to the decision handler

decisionHandler(WKNavigationActionPolicyAllow);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值