持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
前言
上篇我们讲了如何从H5唤起App并跳转指定页面,这次我来分享一下如何从短信链接唤起App。
正文
1、短信唤起App的整个流程
首先我们业务会先发个带链接的短信到手机上,我们进行点击链接,触发唤起App功能,如果已经安装了App,则直接调起打开App,如果没有安装App,则打开浏览器转到下载地址。流程图如下:
2、安卓(deepLink && appLink)
deeplink
安卓主要通过deeplink技术就可以实现,实际是它也可以看做是一种URL Scheme
,不过是
scheme
参数需要设置为http
或者https
的,跟之前的配置一样。需要在react-native工程目录AndroidManifest.xml
文件里面增加一个 intent-filter
标签,一般放在在MainActivity
里面。 代码如下:
<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:scheme="https" android:host="xxx.com" android:pathPattern=".*"
/>
</intent-filter>
现在我们把scheme设置为https,host设置为xxx.com,这样如果手机安装了App,点击访问xxx.com 就可以出现提示使用什么软件打开此地址的窗口,选择自己的App就可以直接打开。
applink
到这里,我们发现点击了短信链接之后,还需要再选择一次自己的App,多了一个选择的步骤,要想省略这个步骤,就得需要到applink
功能,applink
跟deeplink
是差不多的,只不过多了一个流程,就是需要验证。我们在intent-filter
标签加上自动验证属性-android:autoVerify="true"
,代码如下:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="xxx.com" android:pathPattern=".*"
/>
</intent-filter>
接着我们需要新建一个json文件,命名为assetlinks.json
,里面的内容如下:
[ { "relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "应用ID",
"sha256_cert_fingerprints":["签名证书指纹"]
}
}
]
上述文件只需要改package_name和sha256_cert_fingerprints成你自己的就可以,其他的不用改,我们看到这个数据结构是数组,所以想验证多个App的时候,可以在里面放相应的数据。sha256_cert_fingerprints
这个可以使用keytool工具生成,具体可参考:blog.csdn.net/qq_29364417…
我们得到这个文件之后,让后端上传到服务器,并且是可以通过上面设置的域名(xxx.com ) 能直接访问的,再则必须放到根目录的/.well-known/
里面,也就是完整的路径是xxx.com/.well-known… ,直接访问这个文件能拿到数据,如图:
这样我们访问xxx.com 下的链接就可以直接打开App了。
3、IOS(Universal Link)
ios则是可以使用 Universal Link 技术进行App的跳转,这个功能需要ios 9 以上才可以使用。具体步骤可以参考:www.jianshu.com/p/ef0cd17a3…
4、注意问题
-
如果是需要Applink或者Universal Link的话,需要域名是https,并且获取得了证书,且外网可以访问,再则不能有重定向。
-
因为短信是按照字数收费的,所以尽可能的使用短链来发短信。可以在连接后面只带一个字母 + id,到App端的时候再通过这个id去查询参数。例如:xxx.com/s/123
5、安卓兼容问题(测试过的部分机型)
1. 小米手机(MI系统):已实现,点击可不经过浏览器直接调起app;
2. oppo手机:部分实现;
3. 华为手机(非鸿蒙系统):部分实现;
4. 华为手机(鸿蒙系统):暂时无法实现,必须在浏览器选择打开才能调起app。