【问题标题】:caching to memory, writing to file and saving to iCloud while iDevice is locked在 iDevice 锁定时缓存到内存、写入文件并保存到 iCloud
【发布时间】:2015-06-11 17:58:01
【问题描述】:

这是交易,我有一个应用程序,设备在后台侦听 iBeacons 并在用户通过范围内的区域时添加时间戳。最初,一旦我收到 didEnter 回调,我就利用这个机会使用 CloudKit 将信息保存到 iCloud。但有时运气不好,当时互联网不可用并且保存失败(例如,当用户在电梯中时)。

我尝试使用 FMDB 将信息写入数据库并在应用程序进入前台时同步它们。那也行不通。由于iOS8默认加密磁盘并且不允许我在手机被用户锁定或手机重新启动后写入磁盘(尽管NSFileManager中有一些API可以让你写入文件直到它打开称为“ NSFileProtectionCompleteUnlessOpen”,但在手机被锁定几个小时后它们无法工作。也许是一个错误)。

第三种解决方案是将它们写入一个数组,并在我有机会时使用可达性将它们同步到 iCloud(位置回调、appdelegate 回调或reachbilityChanges 通知)。但是这个解决方案对于应用程序终止并不安全。如果用户终止应用程序,我没有足够的时间做任何事情。

最后一个解决方案是混合在一起。如果磁盘已加密,则写入阵列。如果未加密,则写入磁盘。将它们全部同步并随时保存到互联网。在获得帮助之前,不想让自己陷入很多麻烦。

你知道如何处理这个问题吗?

【问题讨论】:

    标签: ios8 core-location fmdb cloudkit


    【解决方案1】:

    区域进入/退出事件后,您有 10 秒的时间在后台执行。在此期间,您可以将数据保存到 UserDefaults 中的 Array 中。然后在应用处于活动状态时与 CloudKit 同步。

    【讨论】:

    • 谢谢 Edwin,手机锁定时 UserDefualt 不是加密了吗?
    • 我发现了如何在手机被锁定和启动时修复 iOS8 上的 NSUserDefault。我试一试。 stackoverflow.com/a/23093030/893771
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 2011-08-07
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多