我的问题是关于在定义的场景中处理推送通知的最佳实践。我的应用程序有3个视图控制器:
- Login:用户通过身份验证以开始使用应用
- TableView:一个简单的表视图,具有类似联系人的外观
- DetailView:一个简单的viewController,包含来自TableView 选定行的详细信息
我收到一个远程通知,其中包含有效负载中的一些信息(例如,我们说一个电话号码)。我需要在DetailView上使用该信息,但在接收时间我没有登录(应用程序没有运行),所以我按通知,它打开我的应用程序(登录),但我需要保持某处通知有效载荷(或从它创建的对象),并将其传递给DetailView。
问题是:如果在用户登录之前收到通知,将通知数据传递到内部ViewController的最佳实践是什么?
我现在唯一的解决方案是:评估didReceiveRemoteNotification
中的对象,将其保留在AppDelegate中,并在每次用户登录时访问它以打开DetailView,如果对象存在(当然使用后清理),但我不认为这是一个好对象。
任何建议吗?
你说的基本上是对的,因为你唯一会收到通知的地方是你的应用程序委托。
但是将数据保存为全局对象是不正确的,特别是如果您希望尊重设计模式和类之间的隔离。
我从你那里了解到,你将在有效载荷中获得的数据将在应用程序的其他屏幕中使用,所以我认为最好的是:
保存在用户默认值或数据库中,并在需要时访问它,并在每次收到新通知时重写它。
如果你想使用数据库选项,我建议你使用Realm,因为它比core data简单得多,并且不需要花太多时间实现它。
提示:如果这是你要在应用程序中保存的唯一一种数据,那么使用User defaults。
希望这能回答你的问题
尝试将此数据保存在User Defaults
中,然后,当您登录时,从User Defaults
获取数据。第二个选项—设置一些variable
并使用此数据初始化它,然后将数据传递给新的ViewController
/