Passbook 和 iCloud - 同步时是不是会触发多个注册?

Posted

技术标签:

【中文标题】Passbook 和 iCloud - 同步时是不是会触发多个注册?【英文标题】:Passbook and iCloud - are multiple registrations triggered upon synching?Passbook 和 iCloud - 同步时是否会触发多个注册? 【发布时间】:2014-05-05 20:46:35 【问题描述】:

假设用户有两台支持 Passbook 的 ios 设备,并且用户都在同一个 iCloud 帐户上注册,并且已打开 Passbook 以与 iCloud 同步。

如果用户通过应用程序(通过链接)下载可更新的通行证(例如具有 web 服务 URL)并在设备 A 上安装通行证,设备 B 是否会使用注册服务/获取序列来完成注册 Passbook 通行证的动作号码/获取更新的通行证?例如。来自不同 POV,服务器是否必须假定用户可以在不同设备上同步他们的可更新通行证,并且它必须支持在不同设备上对同一通行证进行多次注册?

背景:

我们的业务想要使用存折,我们天真地认为我们可以使用设备库标识符来区分设备。事实证明,在单个更新(手动或自动更新)中,相同的 pass(例如 passTypeID+serial 组合)可以更改设备库标识符,作为对注册 REST 服务的调用的一部分。所以我们认为我们至少可以通过始终使用新的详细信息更新最新的注册条目来处理这个问题,这样我们最多只能有一个注册。

如果两个或多个设备可以同步并且都自动完成自己的注册过程,这将中断。只有其中一个设备的通行证正确注册,并且很难预测哪个设备具有正确注册的通行证。如果这没有发生,我们可以继续使用当前的解决方案。

【问题讨论】:

【参考方案1】:

我们已经实现了 Passbook 平台,每个优惠券支持多个设备,这是我的 Mac、iPhone 5 和 iPod 示例。

    我从 Mac 的 URL 下载优惠券,例如:https://passqlub.com:8443/passGen/Pass.seam?passId=71

    然后我有优惠券的预览,然后我点击“添加到存折”

    就像在 5-10 分钟内,两个设备(iPhone 和 iPod)的 iCloud 同步两个设备中的优惠券。将优惠券下载到设备后,它会立即注册到记录(相同的序列号、相同的 PassType,但有两个 deviceId 和令牌)

    如果平台要发送更新,它必须获取序列号和密码类型并遍历设备并发送推送通知。

希望它有助于澄清多个设备上的存折同步。

【讨论】:

【参考方案2】:

您是正确的,因为无法使用设备标识符来区分用户或设备。这有两个原因,首先,如果用户有多个设备和一个 iCloud 帐户,那么通行证将自动在所有设备之间同步,并且所有设备都将使用唯一的设备标识符进行注册。

其次,出于安全目的,设备会轮换其标识符和令牌。发生这种情况时,设备会使用新的设备标识符重新注册。令人讨厌的是,它不会注销旧标识符。您发现设备标识符已过时的唯一方法是通过 APNS 反馈服务。所以如果你不定期推送更新到通行证,或者你不经常查看APNS反馈服务,你会继续积累设备标识符记录,而实际上设备数量并没有增加。

唯一可靠的方法是通过 serialNumberauthorizationTokenpassTypeIdentifier 的组合来唯一地定位传球。这三个(或passTypeIdentifier 和其他两个的组合)可以作为可靠的主键。

您可能需要重新考虑定位记录的架构和逻辑。 Apple 的sample Passbook Server code 包含一个简单但有效的 SQLite 模式,用于通行记录和设备记录。在此示例中,设备记录由设备标识符和序列号的串联索引。

在任何情况下,您都应该独立于您的设备记录来考虑您的通行证记录。当您希望更新通行证时,更新通行证记录,然后识别安装通行证的设备,检索其设备令牌并发送到 APNS 服务器。当每个设备调用检索更新时,您始终可以使用serialNumberauthorizationTokenpassTypeIdentifier 的组合来识别通过记录。

【讨论】:

以上是关于Passbook 和 iCloud - 同步时是不是会触发多个注册?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:NSUserDefaults 是不是与 iCloud 同步?

iOS 是不是允许本地日历和 iCloud 共存?

我如何检查用户是不是切换了 iCloud 帐户?

Realm 是不是与 iCloud 配合得很好?

有啥方法可以检查 iCloud Drive 是不是打开?

我如何知道是不是启用了 iCloud 备份?