我动态创建一个传递。每个pass都有一些不同的内容,如primary field,secondary field,但是所有pass都有相同的serial和passTypeID,所以这样做是对的吗?
答案 0 :(得分:0)
是的,即使每个传递的内容不同,serialNumber
和PassTypeIdentifier
也可以相同。但是,有几件事需要考虑。
Passbook只允许一次使用相同serialNumber
和passTypeIdentifier
组合的一张Pass。这意味着如果用户A安装了primaryField
密钥为name
且包含值Malin
的密码,则用户A会尝试安装包含primaryField
的第二个密码。如果name
的键包含值Nick
,则Passbook会将此视为原始传递的更新,并将Marlin's
传递替换为Nick's
传递。
使用相同的serialNumber
和PassTypeIdentifier
可以带来优势,因为它可以防止用户在单个设备上加载同一传递的多个副本。但有时它可能不是你需要的(例如,父母想要同时拥有自己和孩子的登机牌)。
如果使用相同的serialNumber,则需要考虑如何唯一地标识数据库中的传递记录。您不希望贷方Malin's
通过1,000点积分,也可以信用其他人的通行证。
我们使用authenticationToken
作为唯一键,因为它在Passbook Web Service(注册,取消注册和刷新)的4个传递相关方法中的3个中提供。不幸的是,它没有在Getting the Serial Numbers for Passes Associated with a Device
方法中提供,因此我们将authenticationToken添加到devices表中以提供公共密钥,以便我们可以检查通过记录以查看它是否已更新。