我可以为许多用户使用相同序列和相同passTypeID的1个传递吗?

时间:2013-04-26 01:33:07

标签: ios6 passbook

我动态创建一个传递。每个pass都有一些不同的内容,如primary field,secondary field,但是所有pass都有相同的serial和passTypeID,所以这样做是对的吗?

1 个答案:

答案 0 :(得分:0)

是的,即使每个传递的内容不同,serialNumberPassTypeIdentifier也可以相同。但是,有几件事需要考虑。

Passbook只允许一次使用相同serialNumberpassTypeIdentifier组合的一张Pass。这意味着如果用户A安装了primaryField密钥为name且包含值Malin的密码,则用户A会尝试安装包含primaryField的第二个密码。如果name的键包含值Nick,则Passbook会将此视为原始传递的更新,并将Marlin's传递替换为Nick's传递。

使用相同的serialNumberPassTypeIdentifier可以带来优势,因为它可以防止用户在单个设备上加载同一传递的多个副本。但有时它可能不是你需要的(例如,父母想要同时拥有自己和孩子的登机牌)。

如果使用相同的serialNumber,则需要考虑如何唯一地标识数据库中的传递记录。您不希望贷方Malin's通过1,000点积分,也可以信用其他人的通行证。

我们使用authenticationToken作为唯一键,因为它在Passbook Web Service(注册,取消注册和刷新)的4个传递相关方法中的3个中提供。不幸的是,它没有在Getting the Serial Numbers for Passes Associated with a Device方法中提供,因此我们将authenticationToken添加到devices表中以提供公共密钥,以便我们可以检查通过记录以查看它是否已更新。