Android与iOS自定义URL Scheme唤醒app
需求
手机浏览器中的网页需要唤醒app的特定页面及向app页面传递参数。
实现方案
Android与iOS端均可通过配置自定义的URL Scheme来达到外部唤醒页面的目的。
Android
定义 URL Scheme
在AndroidManifest.xml中对需要唤醒的Activity配置<intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="article" android:scheme="jaren" />
</intent-filter>
通过配置host与scheme就可以定位到此页面,唤醒协议jaren://article
,需要传递参数可拼接query参数
jaren://article?tid=20
获取参数
在Activity的onCreate
方法中获取网页传递的参数,如获取文章的id然后执行网络请求获取文章详情的数据。
Intent intent = getIntent();
if (Intent.ACTION_VIEW.equals(intent.getAction())){
Uri uri=intent.getData();
if (uri!=null){
articleId=uri.getQueryParameter("tid");
}
}
iOS
定义 URL Scheme
iOS在info.plist
文件URL types节点下添加需要自定义的URL Schemejaren
。
获取参数并跳转到相应页面
在AppDelegate.m
实现方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.scheme isEqualToString:@"jaren"]) {
[self jumpPage:url];
return true;
}
return false;
}
jumpPage
方法则是匹配url字符串来定位特定页面,url.query
是传递的参数字段。
网页调用协议
网页端调用定义的协议
<div>
<a href="jaren://article?aid=20">app打开文章</a>
</div>
这样在浏览器中打开此网页,点击app打开文章
就可以唤醒app的文章详情页面。