登录前处理推送通知信息

时间:2016-10-19 07:56:30

标签: ios swift push-notification

我的问题是用于在定义的方案中处理推送通知的最佳实践。 我的应用有3个ViewControllers:

  • 登录:用户进行身份验证以开始使用该应用
  • TableView:带有类似外观的联系人的简单表格视图
  • DetailView:一个简单的viewController,包含TableView所选行的详细信息

我收到了有效负载中的一些信息的远程通知(例如,让我们说一个电话号码)。我需要在DetailView上使用该信息,但是在接收时我没有登录(应用程序没有运行),所以我按下通知并打开我的应用程序(登录)但我需要保留某处通知负载(或对象)从它创建)并将其传递给DetailView。

所以问题是: 如果在用户登录之前收到通知,那么将数据从通知传递到内部ViewController的最佳做法是什么?

我现在唯一的解决方案是:评估didReceiveRemoteNotification中的对象,将其保存在AppDelegate中,并在每次用户登录时访问它,如果对象存在则打开DetailView(并在使用后清理它)但我不认为这是一个好人。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

尝试将此数据保存在User Defaults中,然后在您登录时,从User Defaults获取数据。第二个选项 - 设置一些variable并将其初始化为此数据,然后将数据传递给新的ViewController /

答案 1 :(得分:0)

您所说的内容大部分是正确的,因为您将收到通知的唯一地方是您的应用代表。

但是保留带有数据的全局对象并不是正确的做法,特别是如果您想尊重设计模式和类之间的隔离。

据我了解,你将在有效载荷中获得的数据将用于应用程序的其他屏幕,所以我认为最好的是:

将其保存在用户默认值或数据库中,并在您需要时访问它,并在每次新通知时保持覆盖它。

如果你想使用数据库选项,我建议你使用Realm比核心数据更容易,并且没有花太多时间来实现它。

提示:如果这是您要在应用中保存的唯一数据类型,则使用用户默认值。

希望这能回答你的问题