【小程序官方】
NFC 标签必须是 NFC Data Exchange Format (NDEF)
类型;
标签中需要包含两条 Record :
URI RecordType (记录1)
- Name Format (TNF):
0x01
(Well-Known) - Type:
U
- Payload: 小程序 URL Scheme
Android Application Record, AAR(记录2)
- Type Name Format (TNF):
0x04
(NFC Forum external type) - Type:
android.com:pkg
- Payload: 微信安卓包名
com.tencent.mm
1、查看标签是否为 NDEF 类型
2、写入两条 Record
const records = [
{
id: str2ab('mini-ios'),
tnf: 1,
type: str2ab('U'),
payload: str2ab('小程序 URL Scheme', [0])
},
{
id: str2ab('mini-android'),
tnf: 4,
type: str2ab('android.com:pkg'),
payload: str2ab('com.tencent.mm')
}
]
/**
* String to ArrayBuffer
* @param {String} text 字符串
* @param {String} extraBytes 额外的字节数组
*/
export function str2ab (text, extraBytes) {
const uriStr = encodeURIComponent(text)
const bytes = []
for (let i = 0; i < uriStr.length; i++) {
const code = uriStr.charAt(i)
if (code === '%') {
const hex = uriStr.slice(i + 1, i + 3)
const hexVal = parseInt(hex, 16)
bytes.push(hexVal)
i += 2
} else {
bytes.push(code.charCodeAt(0))
}
}
if (extraBytes) {
bytes.unshift(...extraBytes)
}
return new Uint8Array(bytes).buffer
}
3、总结
1)区分【获取 NFC 的小程序 scheme】 与 【获取 scheme 码】的 API,不能用错接口
2)注意两条 Record 写入次序:先写入 URI RecordType (记录1),再写入 Android Application Record, AAR(记录2);
未按照顺序写入时,安卓只打开微信,没有拉起小程序(原因:https://developer.android.google.cn/guide/topics/connectivity/nfc/nfc?hl=zh_cn)
3)小程序 URL Scheme 转换 ArrayBuffer 时,在字节数组首位需额外加上 0x00;(因为 URI 记录数据的第一个字节为协议字段,小程序 URL Scheme 没有对应协议,故用 0x00,其实微信官方在写小程序 writeNdefMessage API 时,可以把这个逻辑封装起来,减少开发者学习成本)
大佬,用上面小程序填入URL Scheme后,苹果可以拉起小程序,安卓只能拉起微信打开support.weixin.qq.com这个网页,求问解决方法
IOS能正常打开小程序,安卓却一直跳进微信的公交卡服务,有没有知道原因的
需要代写NFC内容或者需要NFC标签可以加我V:1256711178
我三种写入 IOS都能通过nfc进入小程序,但是安卓均不能进入 出现三种失败情况,
一种是安卓能打开微信,无后续动作;
另一种是打开微信后,跳转显示“对不起,当前页面无法访问”
还有一种是打开微信后,调整到公交卡了
看见了
ndef.writeNdefMessage
那么怎么“读”呢?没见有 ndef.readNdefMessage 啊.
https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/NFCAdapter.onDiscovered.html
这个records用在哪里呢?有无大佬解释一下咯?十分感谢
https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/Ndef.writeNdefMessage.html
没有理解,怎么把获取到的scheme 地址 写入到nfc呢?
我需要给我的客户做NFC拉起小程序,必须要我的客户去变更营业执照,让经营范围里面有智能硬件这个类目吗?
请问 model_id 这个要怎么申请
2、小程序管理后台 -> 功能 -> 硬件设备 -> 设备管理 -> 添加设备
{ id: str2ab('mini-android'), tnf: 4, type: str2ab('android.com:pkg'), payload: str2ab('com.tencent.mm') } 这部分是不是不用改 直接抄就行了