callapp-lib
callapp-lib 是一个 H5 唤起 APP 的解决方案,能够满足大部分唤起客户端的场景,也预留了扩展�?ï¿½ï¼Œå¸®ä½ å®žçŽ°ä¸€äº›å®šåˆ¶åŒ–çš„åŠŸèƒ½ã€‚
å¦‚æžœä½ æƒ³äº†è§£ä¸€äº›å”¤ç«¯çš„åŽŸï¿½?�知识,或者阅读下�?�的文档有�?�?�解的�??�?,�?�以访问这篇�?�客 H5唤起APP指�?� 。
å¦‚æžœä½ åœ¨ä½¿ç”¨ callapp-lib 的过程ä¸ï¼Œæœ‰å¥½çš„æƒ³æ³•或者�?�现了bug,�?? Issue 就行,作者会�?�时跟进。
Install
Install with npm:
$ npm install --save callapp-libUsage
const CallApp = require('callapp-lib');
or
import CallApp from 'callapp-lib';callapp-lib �?ï¿½æ ·æ”¯ï¿½? script åŠ è½½ï¼Œä½ ï¿½?�以使用下�?�的 cdn文件(地�?�在下�?�的示例ä¸ï¼‰ï¼Œä¹Ÿï¿½?�以下载 dist/index.umd.js åˆ°ä½ çš„é¡¹ç›®ä¸ï¼Œindex.umd.js 会暴露一个全局�?��? CallApp ,这个全局�?��?和上�?� commonjs 导入的 CallApp 内容是一致的,使用方法也是一致的。
<!-- �?�时下载未压缩的最新版本 Js -->
<script src="https://unpkg.com/callapp-lib"></script>
or
<!-- 具体�?ä¸€ç‰ˆæœ¬ï¼Œæœ¬ä¾‹ä¸æ˜¯ 2.1.5 ,下载速度较上�?ï¿½å¿«ä¸€äº›ï¼Œå› ä¸ºä¸Šï¿½?�的地�?�会有 302 -->
<script src="https://unpkg.com/callapp-lib@2.1.5/dist/index.umd.js"></script>
or
<!-- 这是压缩版本,文件体积会�? 1/2 左�?�,下载速度最快,生产环境建议使用这个 -->
<script src="https://unpkg.com/callapp-lib@2.1.5/dist/index.umd.min.js"></script>callapp-lib ä¸ä¼ 递出�?ï¿½çš„æ˜¯ä¸€ä¸ªç±»ï¼Œä½ éœ€ï¿½?将它实例化,然�?��?能去调用实例对象的方法。
const options = {
key1: 'xxx',
key2: 'xxx'
};
const callLib = new CallApp(options);
callLib.open({
param: {},
path: 'xxx'
});Demo
请访问demo页�?�,或访问demo文件
å¦‚æžœä½ åœ¨ä½¿ç”¨ç§»åŠ¨ç«¯ï¼Œï¿½?�以扫�??下方二维�?:
Options
实例化过程ä¸ï¼Œéœ€ï¿½?ä¼ é€’ä¸€ä¸ª options 对象给类,options 对象�?�属性需�?ä¸¥æ ¼æŒ‰ç…§ä¸‹ï¿½?ï¿½çš„æ ¼ï¿½?。
下�?�所有�?æ˜¯å¿…å¡«çš„ï¼Œå¦‚æžœä½ ï¿½?需�?ä¼ å€¼ï¼Œå°±ï¿½?�?写这个属性,而�?æ˜¯ä¼ é€’ä¸€ä¸ªç©ºå—符串或者空对象,callapp-lib 并未对这�?æƒ…å†µè¿›è¡Œä¸¥æ ¼çš„æ£€æµ‹ã€‚
scheme
类型: object
å¿…å¡«:
用�?��?ç½® URL Scheme 所必须的那些vå—æ®µã€‚
-
protocol
类型:
string
å¿…å¡«:✅ APP �??议,URL Scheme çš„ scheme å—æ®µï¼Œå°±æ˜¯ä½ �?打开的 APP çš„æ ‡è¯†ã€‚
-
host
类型:
string
å¿…å¡«:�?� URL Scheme çš„ host å—æ®µã€‚
-
port
类型:
string|number
å¿…å¡«:�?� URL Scheme çš„ port å—æ®µã€‚
protocol
callapp-lib 2.0.0 版本已移除,原先的 protocol 移入到新增的 scheme 属性ä¸
outChain
类型: object
å¿…å¡«:
外链。我们的 APP 的�?些功能�?�能会集�?到�?�一个 APP ä¸ï¼Œä¸ºäº†åŒºåˆ†å®ƒä»¬çš„�??è®®ï¼Œä¼šåŠ ä¸Šä¸€ä¸ªä¸é—´ï¿½?明页�?�分�?�路由,这层ä¸é—´é¡µçš„ URL Scheme 对于我们�?�说就是外链。当然,这里的外链对 Intent �?ï¿½æ ·ç”Ÿæ•ˆã€‚
例:youku://ykshortvideo?url=xxx
-
protocol (2.0.0 版本由原先的 protocal 修改为 protocol,原先的 protocal 是拼写错误)
�?� URL Scheme çš„ scheme å—æ®µï¼Œåœ¨ä½ çš„ APP 就和上�?�的 protocol 属性值相�?�,在其他 APP æ‰“å¼€å°±ä¼ è¯¥ APP çš„ scheme æ ‡è¯†ã€‚
-
path
�?�考 URL Scheme çš„ path å—æ®µï¼Œå®ƒä»£è¡¨äº†è¯¥ APP 的具体的�?个功页�?�(功能),这里的 path 就是对应的ä¸é—´é¡µã€‚
-
key
既然�?�是ä¸é—´é¡µï¼Œå®ƒè‡ªç„¶ï¿½?打开我们真æ£ï¿½?打开的页�?�,所以我们需�?把�?打开的页�?�的 URL Scheme ä¼ é€’è¿‡åŽ»ã€‚å°±ï¿½?�?端从 URL çš„ query å—符串里�?��?ï¿½å€¼ä¸€æ ·ï¼Œå®¢æˆ·ç«¯ä¹Ÿæ˜¯ä»Ž URL Scheme 里�?��?��?�。至于�?�数 key 定�?什么,大家自己去�??商�?�,上�?�的示例ä¸
url也�?�是一个示例。
intent
类型: object
å¿…å¡«:
安�?�原生谷æŒï¿½?è§ˆå™¨å¿…é¡»ä¼ é€’ Intent �??议地�?�,�?能唤起 APP。
它支�?ä»¥ä¸‹äº”ä¸ªå±žæ€§ï¼Œå…¶ä¸ scheme å’Œ 上�?�的 protocal ä¸€æ ·ï¼Œå…¶ä»–å››ä¸ªéƒ½æ˜¯ apk 相关信�?ï¿½ï¼Œå…¶ä¸ package å’Œ scheme å¿…ä¼ ï¼š
- package
- action
- category
- component
- scheme
universal
类型: object
å¿…å¡«:
å¦‚æžœä½ ä»¬çš„ ios 工程师没有�?�相应的�?置�?�让 APP 支�? Universal Linkï¼Œä½ ï¿½?�以�?ç”¨ä¼ é€’ï¼Œ callap-lib 将会使用 URL Scheme �?�替代它。
-
host
ä½ çš„ Universal Link 的域�??,
apple-app-site-association文件就放在这个域�??对应的�?务器上。 -
pathKey
pathKey 就和�?�?� Intent çš„ key å±žæ€§ä¸€æ ·ï¼Œï¿½?�是这里的 pathKey 是客户端用�?��??�?� path 信�?�的,以便知�?�调用的是 APP 的哪个页�?�。这个值也是需�?ä½ å’Œ ios 童鞋�??商定下�?�的。
appstore
类型: string
å¿…å¡«:
APP 的 App Store 地�?�,例: https://itunes.apple.com/cn/app/id1383186862。
yingyongbao
类型: string
å¿…å¡«:
APP 的应用�?地�?�,例:'//a.app.qq.com/o/simple.jsp?pkgname=com.youku.shortvideo'。
timeout
类型: number
å¿…å¡«:
默认值: 2000
ç‰å¾…唤端的时间(�?��?: ms),超时则判æ–为唤端失败。
fallback
类型: string
å¿…å¡«:
唤端失败�?�跳转的地�?�。
logFunc
类型: function
å¿…å¡«:
埋点入�?�函数。�?�?��?�å¦ï¿½?�能会希望我们在唤端的时候�?ï¿½åŸ‹ç‚¹ï¼Œå°†ä½ çš„åŸ‹ç‚¹å‡½æ•°ä¼ é€’è¿›ï¿½?�,�?管唤端�?功与�?ï¿½ï¼Œå®ƒéƒ½ä¼šè¢«æ‰§è¡Œã€‚å½“ç„¶ï¼Œä½ ä¹Ÿï¿½?�以将这个函数�?�作他用。
buildScheme
类型: function
å¿…å¡«:
url scheme 自定义拼接函数,内置的 buildScheme 函数是按照 uri 规范�?ï¿½æ‹¼æŽ¥çš„ï¼Œå¦‚æžœä½ ä»¬çš„ app 对 url scheme 有特殊需求,�?�以自定义这个函数,æ¤å‡½æ•°æœ‰ä¸¤ä¸ªå…¥ï¿½?�,(config, options), config æ˜¯ä½ è°ƒç”¨ open æ–¹æ³•æ˜¯ä¼ å…¥çš„å¯¹è±¡ï¼Œoptions æ˜¯ä½ ï¿½?始化 callapp-lib æ—¶ä¼ å…¥çš„å¯¹è±¡ã€‚
Method
open
唤端功能。接收一个对象作为�?�数,该对象支�?以下属性:
-
path
类型:
stringå¿…å¡«:✅ 需�?打开的页�?�对应的值,URL Scheme ä¸çš„ path 部分,�?�照 H5唤起APP指�?� 一文ä¸çš„解释。
�?�想�?直接打开 app ,�?需�?打开特定页�?�,path ä¼ ç©ºå—符串
''就�?�以。 -
param
类型:
object
必填:�?� 打开 APP �?个页�?�,它需�?接收的�?�数。
-
callback å¿…å¡«:
�?� 类型:
functionè‡ªå®šä¹‰å”¤ç«¯å¤±è´¥å›žè°ƒå‡½æ•°ã€‚ä¼ é€’
callback会覆盖 callapp-lib 库ä¸é»˜è®¤çš„唤端失败处�?�逻辑。
generateScheme
接收一个对象作为�?�数,该对象包�?�以下属性:
- path
- param
属性�?�义和 open 方法�?�数的属性一致。
返回 URL Schemeã€‚å¦‚æžœä½ è§‰å¾— callapp-lib 的唤端处�?�方�?�?符�?ï¿½ä½ çš„éœ€æ±‚ï¼Œä½†ä½ ï¿½?��?想费心费力的自己去拼凑 URL Scheme,�?�以利用这个方法直接生�?。
generateIntent
生�? Intent 地�?�,接收�?�数�?� generateScheme 方法�?�数。
generateUniversalLink
生�? Universal Link,接收�?�数�?� generateScheme 方法�?�数。

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.

