收藏
回答

nfc Ndef.writeNdefMessage 13012 这个错误要怎么处理啊。?



13012 写入失败

Ndef.writeNdefMessage(Object object) 我到底要怎么弄才能写入成功啊。。。。。

uris数组和texts数组 要发什么内容啊。 。 。

records的内容我应该怎么处理整理。。


nfca的方式我也试了。


业务需求:nfc开锁。 。

能不能告诉我下能不能实现。。

我应该怎么做。。 。。

最后一次编辑于  2020-08-28
回答关注问题邀请回答
收藏

4 个回答

  • 一次就好!
    一次就好!
    2022-11-03

    请问下大佬,这个问题解决了吗? 我也是这个问题

    2022-11-03
    有用
    回复
  • xifan😃
    xifan😃
    2020-12-19

    在写入数据前,必须先连接connect ,然后连接完成必须关闭,最后关闭监听,否者每次都会写入失败。


    2020-12-19
    有用
    回复
  • 思南
    思南
    2020-12-07

    刚从坑里爬出来。

    其实是小程序开发文档的问题,records数组里的对象,除了id,type和payload以外,还有一个tnf参数。

    这个参数的具体作用和如何取值可以参考:

    https://developer.android.google.cn/reference/android/nfc/NdefRecord?hl=zh_cn#TNF_ABSOLUTE_URI

    如下,写入这个records就好了。


    20201208 更新

    下面的string2ArrayBuffer方法无法正确处理中文,推荐使用下面这个库进行转换:

    https://www.npmjs.com/package/text-encoding

    const string2ArrayBuffer = function(str) {
        // 首先将字符串转为16进制
        let val = ""
        for (let i = 0; i < str.length; i++) {
            if (val === '') {
                val = str.charCodeAt(i).toString(16)
            } else {
                val += ',' + str.charCodeAt(i).toString(16)
            }
        }
        // 将16进制转化为ArrayBuffer
        return new Uint8Array(val.match(/[\da-f]{2}/gi).map(function(h) {
            return parseInt(h, 16)
        })).buffer
    }
    
    //  tnf这个属性我是从onDiscovered的出参中发现的
    const records = [{
        id: string2ArrayBuffer('你要写入的id'),
        payload: string2ArrayBuffer('你要写入的信息'),
        type: string2ArrayBuffer('你要写入的类别'),
        tnf: 2
    }];
    
    2020-12-07
    有用
    回复
  • Cjiang
    Cjiang
    2020-08-28

    你好,需要自己明确下,自己具体要写入什么数据;

    如果是apdu指令,是通过transceive这个接口直接写ArrayBuffer没错的;

    具体要通过什么对象来写,可以参考

    https://developers.weixin.qq.com/miniprogram/dev/framework/device/nfc.html这里的对应关系,如果确实不清楚的话,可以把回调里能get到的对象都试一遍;另外这里确实会有比较高的概率报13017,建议开发者固定贴好卡在写,多试几次确认下

    2020-08-28
    有用
    回复 4
    • 林光宇
      林光宇
      2020-08-28
      我的设备有2中 NDEF和nfca的。 


      我这边设备是有一个数据是要传的。


      但是我写入不进去
      Ndef.writeNdefMessage  是13012
      NfcA 我传了ArrayBuffer 是13017 


      我现在想不到要怎么处理。
      2020-08-28
      回复
    • 林光宇
      林光宇
      2020-08-28
      Ndef.writeNdefMessage 的写入文档提供了3中uris text  和records 。。。这三种我不知道该怎么把我的要发的数据传进去。
      2020-08-28
      回复
    • 云天
      云天
      2020-10-22回复林光宇
      NfcA 传ArrayBuffer ,是在transceive()的data传onDiscovered()回调里面获得的ArrayBuffer 吗?
      2020-10-22
      回复
    • 同步
      同步
      2020-12-18回复林光宇
      楼主解决了吗?传text参数
      2020-12-18
      回复
登录 后发表内容
问题标签