配置 NFC 读取
扫描或停止扫描 NFC(近场通信)标签。
另请参阅
选项
- 
                                                
“操作”指定是开始(读取)还是停止(取消)扫描 NFC 标签。
 
以下选项仅用于读取:
- 
                                                
“脚本”指定在读取标签、发生错误、用户取消操作或使用“取消”选项的另一个“配置 NFC”脚本步骤取消操作时要运行的脚本。
 - 
                                                
“参数”(可选)指定脚本的脚本参数。
 - 
                                                
“超时”(可选)会在指定的秒数后自动取消读取操作。
 - 
                                                
“持续读取”(可选)如果该值不为零,则将脚本步骤设置为读取标签,直到用户点击“取消”按钮、达到超时参数指定的值或者操作系统规定的时间限制为止。如果此选项为零或未指定,则仅读取一个标签。
 - 
                                                
将结果格式化为 JSON(可选)如果该值不为零,这会引起脚本接收 NFC 标签数据作为 JSON 对象。如果此选项为零或未指定,则会接收多行字符串数据。
 
兼容性
| 产品 | 是否支持 | 
| FileMaker Pro | 否 | 
| FileMaker Go | 是 | 
| FileMaker WebDirect | 否 | 
| FileMaker Server | 否 | 
| FileMaker Cloud | 否 | 
| FileMaker Data API | 否 | 
| 自定义 Web 发布 | 否 | 
原始版本
19.0
说明
使用此脚本步骤扫描或停止扫描使用少量数据编程的 NFC 标签。NFC 标签中数据通常是使用 http、tel、fmp 和 mailto 等协议的 URL。
必须在“脚本”选项指定的脚本中调用 Get (脚本参数)函数,以返回 NFC 标签的数据。根据“将结果格式化为 JSON”的设置,NFC 标签数据将作为 JSON 对象或多行字符串返回。
下表说明 JSON 对象中的每个元素和多行字符串的每一行。有关 NFC 参数的更多信息,请参见 NFC 数据交换格式 (NDEF) 规范。
| JSON 元素 | 
                                                         字符串行号  | 
                                                    
                                                         说明  | 
                                                
|---|---|---|
action
                                                     | 
                                                    
                                                         1  | 
                                                    
                                                         调用脚本的原因。返回: 
  | 
                                                
error
                                                     | 
                                                    
                                                         2  | 
                                                    
                                                         错误字符串  | 
                                                
parameter
                                                     | 
                                                    
                                                         3  | 
                                                    
                                                         “指定脚本”对话框中指定的可选脚本参数  | 
                                                
payloadCount
                                                     | 
                                                    
                                                         4  | 
                                                    
                                                         从标签读取的 NFC 记录数量  | 
                                                
payloads
                                                     | 
                                                    - | 
                                                         JSON 中以下行的对象数组,每条 NFC 记录一行。在多行字符串中,行 5 至 8 对每条 NFC 记录重复。  | 
                                                
identifier
                                                     | 
                                                    
                                                         5  | 
                                                    
                                                         NFC 记录的标识符  | 
                                                
primary
                                                     | 
                                                    
                                                         6  | 
                                                    
                                                         作为字符串的 NFC 记录的有效负载  | 
                                                
type
                                                     | 
                                                    
                                                         7  | 
                                                    
                                                         NFC 记录的类型  | 
                                                
typeNameFormat
                                                     | 
                                                    
                                                         8  | 
                                                    
                                                         NFC 记录的类型名称格式  | 
                                                
secondary
                                                     | 
                                                    - | 存在的其他有效负载信息(仅限 JSON) | 
这是作为 JSON 对象的 NFC 标签数据示例:
{
  "action" :"TagRead",
  "error" : "",
  "parameter" :"Optional script parameter",
  "payloadCount" :2,
  "payloads" :
  [
    {
      "identifier" : "",
      "primary" :"This is the content from the NFC card.",
      "secondary" : "en",
      "type" :"T",
      "typeNameFormat" :1
    },
    {
      "identifier" : "",
      "primary" : "https://example.com",
      "secondary" : "",
      "type" :"U",
      "typeNameFormat" :1
    }
  ]
}
                                            
                                            
下面是作为多行字符串的相同 NFC 标签数据:
TagRead
Optional script parameter
2
This is the content from the NFC card.
T
1
https://example.com
U
1
                                            注释
- 
                                                
同一时间只能进行一次读取操作。如果在执行取消操作时正在进行读取操作,则取消读取操作。
 - 
                                                
打开 URL 脚本步骤可用于打开 URL,例如从读取 NFC 标签获取的 URL。
 
示例 1
启动单个 NFC 标签的读取,并在达到 NFC::Timeout 字段中指定的超时值后停止。读取标签后,将在“解析结果”子脚本指定的字段中设置标签中的数据,该结果将从“扫描一次完成”子脚本中调用。
主脚本:扫描一次
转到布局 [ "NFC Tag" ; Animation:None ]
配置 NFC 读取 [ 操作:读取 ; 脚本:"扫描一次完成" ; 参数:"The current date and time is " & Get ( 当前系统时间 ) ; 超时:NFC::Timeout ; 将结果格式化为 JSON:1 ]
                                            子脚本 1:扫描一次完成
设置变量[ $scriptParam ; 值:Get ( 脚本参数 ) ]
执行脚本 [指定:来自列表 ; "解析结果" ; 参数: $scriptParam ]
显示自定义对话框: [ "NFC 搜索完成" ; $scriptParam ]
                                            子脚本 2:解析结果
由于将结果格式化为 JSON 在“扫描一次”脚本的“配置 NFC 读取”脚本步骤中设置为非零值,因此“解析结果”脚本会将标签数据解析为 JSON 对象。
新建记录/请求
设置字段 [ NFC::Text ; Get ( 脚本参数 ) ]
设置字段 [ NFC::Tag ; JSONGetElement ( NFC::Text ; "payloads[0].primary" ) ]
设置字段 [ NFC::PayloadCount ; JSONGetElement ( NFC::Text ; "payloadCount" ) ]
设置字段 [ NFC::Result ; JSONGetElement ( NFC::Text ; "action" ) & JSONGetElement ( NFC::Text ; "error" ) ]
设置字段 [ NFC::ReadTimestamp ; Get ( 当前系统时间 ) ]
设置字段 [ NFC::ID ; JSONGetElement ( NFC::Text ; "payloads[0].identifier" ) ]
设置字段 [ NFC::Type ; JSONGetElement ( NFC::Text ; "payloads[0].type" ) ]
提交记录/请求 [ 包括对话框:关闭 ]
                                            
                                            
如果您想使用多行字符串,请将将结果格式化为 JSON 选项设置为零。然后将“解析结果”脚本更改为以下内容:
新建记录/请求
设置字段 [ NFC::Text ; Get ( 脚本参数 ) ]
设置字段 [ NFC::Tag ; GetValue ( NFC::Text ; 6 ) ]
设置字段 [ NFC::PayloadCount ; GetValue ( NFC::Text ; 4 ) ]
设置字段 [ NFC::Result ; GetValue ( NFC::Text ; 1) & GetValue ( NFC::Text ; 2 ) ]
设置字段 [ NFC::ReadTimestamp ; Get ( 当前系统时间 ) ]
设置字段 [ NFC::ID ; GetValue ( NFC::Text ; 5) ]
设置字段 [ NFC::Type ; GetValue ( NFC::Text ; 7) ]
提交记录/请求 [ 包括对话框:关闭 ]
                                            示例 2
启动多个 NFC 标签的读取,并在达到 NFC::Timeout 字段中指定的超时值或取消扫描时停止。读取标签时将在“解析结果”子脚本指定的字段中设置标签中的数据(请参阅示例 1)。
主脚本:扫描多次
配置 NFC 读取 [ 操作:读取 ; 脚本:"解析结果" ;参数:"扫描开始于 " & Get ( 当前系统时间 ) ; 超时:NFC::Timeout ; 持续读取:1 ; 将结果格式化为 JSON:1] 
转到布局 [ "NFC 扫描列表"; 动画:无 ]
                                            示例 3
如果 NFC 记录为“U”(表示有效负载为 URL),则发起标签读取并尝试打开 URL。在达到 NFC::Timeout 字段中指定的超时值或取消扫描时停止扫描。读取标签后将在“解析结果”子脚本指定的字段中设置标签中的数据(请参阅示例 1),该结果将从“通过扫描打开”子脚本中调用。
主脚本:扫描并打开
配置 NFC 读取 [ 操作:读取 ; 脚本:"通过扫描打开" ; 参数:"扫描开始于 " & Get ( 当前系统时间 ) ; 超时:NFC::Timeout ; 将结果格式化为 JSON:1 ] 
转到布局 [ "NFC 扫描列表"; 动画:无 ]
                                            子脚本:通过扫描打开
设置变量[ $scriptParam ; 值:Get ( 脚本参数 ) ]
执行脚本 [指定:来自列表 ; "解析结果" ; 参数: $scriptParam ]
提交记录/请求 [ 包括对话框:关闭 ]
If [ NFC::Type = "U" ]
    打开 URL [ 包括对话框:开启 ; NFC::Tag ] 
End If