【问题标题】:NSUserDefault update best practicesNSUserDefault 更新最佳实践
【发布时间】:2018-01-10 22:41:53
【问题描述】:

我使用的是 Xcode 9.2,Objective-c。

我已经按照 Apple 推荐的方式使用 registerDefaults 注册了我的默认值。一切正常。

想想这个简单的场景:我的默认值中有一个键/值对,其中的值是 NSMutableDictionary。

现在我想在应用更新中向该特定字典添加一些键/值对。由于我的默认值中已经存在该键,因此该值(字典)不会被 registerDefaults 方法中的新值覆盖。

当然,我可以从默认值中读取字典,添加我的新对并将它们写回。但我想知道是否有更优雅的方式或更新的最佳实践?

【问题讨论】:

    标签: objective-c nsuserdefaults


    【解决方案1】:

    您应该只在应用启动时注册一次默认值。其他一切都应该是UserDefaults 的操作。所以访问数组,附加一个值,并将其设置回默认值就可以了。

    【讨论】:

    • 是的,我在应用程序委托 appDidFinishLaunching 方法中注册了一次。我想到了一个新的应用程序版本/更新,我需要扩展已经存在的值。通过读/写回注入始终是一种选择,只是想知道是否有更好的更新方式
    【解决方案2】:

    我认为您应该对旧数据更新使用静默推送通知。

    注意:

    它们可用于通知应用程序新内容,而无需通知用户。应用程序将在后台被唤醒,而不是显示通知警报,并且 application:didReceiveRemoteNotification:fetchCompletionHandler: 将被调用。然后,您就有机会为用户透明地处理任何信息:

    下载一些内容 同步一些元素, 当用户重新打开应用程序时,直接在应用程序内通知用户 请注意,您的时间限制为 30 秒。

    配置静默通知

    要支持静默远程通知,请添加远程通知 Info.plist 文件中 UIBackgroundModes 数组的值。学习 有关此数组的更多信息,请参阅 UIBackgroundModes。

    <key>UIBackgroundModes</key>
    <array>
        <string>remote-notification</string>
    </array>
    

    配置静默通知

    aps 字典也可以包含 content-available 属性。 值为 1 的 content-available 属性允许远程 通知充当静默通知。当无声通知 到了,iOS 会在后台唤醒你的应用,这样你就可以得到 来自您的服务器的新数据或进行背景信息处理。 用户不会被告知产生的新信息或更改信息 从一个无声的通知,但他们可以在下一个找到它 他们打开您的应用的时间。

    对于无声通知,请注意确保没有警报, aps 字典中的声音或徽章有效负载。如果你不关注 在本指南中,错误配置的通知可能是 节流且未在后台传送到应用程序,而是 向用户显示保持沉默的状态

    希望这对您有所帮助。如果你需要任何帮助,你可以问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 2010-10-01
      • 2017-01-31
      • 2011-03-16
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多