Android与iOS自定义URL Scheme唤醒app

需求

手机浏览器中的网页需要唤醒app的特定页面及向app页面传递参数。

实现方案

Android与iOS端均可通过配置自定义的URL Scheme来达到外部唤醒页面的目的。

Android

定义 URL Scheme

在AndroidManifest.xml中对需要唤醒的Activity配置

  <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的文章详情页面。

更多相关文章

  1. Android 获取View的位置参数:x,y和相对父容器的偏移量以及中心点
  2. Android登录界面开发及响应;页面跳转;传参
  3. Android studio 页面布局无法显示问题
  4. android 进入页面隐藏输入法
  5. android 随手记之文件+参数上传请求
  6. activity页面切换效果
  7. Android成长(二)——两个页面交互
  8. 关于Android设备屏幕大小及密度的系统参数类
  9. Android中ListView.getCount()与ListView.getChildCount()区别和

随机推荐

  1. MySQL数据库引擎ISAM MyISAM HEAP InnoDB
  2. mysql 数据库中表不同 但是列名相同,怎么
  3. SQL从结果数据库中选择subCode及其得分,并
  4. 什么时候最推荐使用mysql_real_escape_st
  5. Atitit 数据库 标准库 &#160;sdk 函数库
  6. mysql如何导出HTML?
  7. wampserver无法启动之mysql疑难杂症
  8. Linux下mysql数据库root无法登录的情况
  9. CentOS 6.5下源码安装mysql 5.5
  10. 在MySQL中将数据从LATIN1转换为UTF8