mobileNFC
来自于:AC模块工作室立即使用
available addEventListener begin invalidate
概述
2017年苹果在 WWDC 大会上 开放了 iOS11 读取 EDEF 标准格式的 NFC 功能,但只限于 iPhone 7 及以上的机型。由于目前只开放了读的权限,所以苹果的 NFC 是非常轻量级的一个框架。注意苹果的 NFC 目前只支持标准的 EDEF 格式的 NFC 换句话来说,iOS 扫不出公交卡,以及以前自定义格式的NFC,这个局限性很大。
模块使用攻略
1,登录苹果开发者中心,配置包名(Bundle Identifier)申请 NFC 权限,如下图所示:
2,创建 entitlements 文件,告诉 APICloud 云编译服务器 APP 申请访问 NFC 权限。配置详情参考论坛文档,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>NDEF</string>
</array>
</dict>
</plist>
3,云编译时勾选、填写访问 NFC 提示语,如下图所示:
available
当前设备是否支持 NFC 功能
available()
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: //布尔类型;是否支持,true|false
}
示例代码
var mobileNFC = api.require('mobileNFC');
mobileNFC.available(function(ret) {
if (ret.status) {
api.alert({ msg: "支持 NFC 功能!" });
} else {
api.alert({ msg: "不支持 NFC 功能!" });
}
});
可用性
iOS11 及以上系统
可提供的1.0.0及更高版本
addEventListener
添加识别结果的监听
addEventListener(callback(ret))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: , //布尔类型;是否获取成功
messages:[
records:[{
type:, //字符串类型;载体的类型
identifier:, //字符串类型;载体的标识
payload: , //字符串类型;载体中的未解析数据
typeNameFormat: //数字类型;载体的类型名称格式
// 0:Empty
// 1:NFCWellKnown
// 2:Media
// 3:AbsoluteURI
// 4:NFCExternal
// 5:Unknown
// 6:Unchanged
}]
]
}
err:
- 类型:JSON 对象
- 内部字段:
{
code: , //布尔类型;是否获取成功
msg:, //字符串类型;
}
示例代码
var mobileNFC = api.require('mobileNFC');
mobileNFC.addEventListener(function(ret, err) {
if (ret.status) {
api.alert({ msg: JSON.stringify(ret) });
} else {
api.alert({ msg: JSON.stringify(err)});
}
});
可用性
iOS11 及以上系统
可提供的1.0.0及更高版本
begin
开始识别
begin({params})
params
title:
- 类型:字符串
- 描述:(可选项)验证弹框的提示语
multiple:
- 类型:布尔
- 描述:(可选项)是否支持多次自动识别
- 默认:false(识别到 tag 即停止本次识别)
示例代码
var mobileNFC = api.require('mobileNFC');
mobileNFC.begin({
title: '您正在使用 NFC 功能',
multiple: false
});
可用性
iOS11 及以上系统
可提供的1.0.0及更高版本
invalidate
停止识别
invalidate()
示例代码
var mobileNFC = api.require('mobileNFC');
mobileNFC.invalidate();
可用性
iOS11 及以上系统
可提供的1.0.0及更高版本