iOS 处理多个推送通知

iOS handling multiple push notifications

我想在 table 视图中显示多个(远程)通知。 我的问题是,只显示一条消息。

在我的 AppDelegate.swift 我有这个:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]){

    let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let rVC = storyboard.instantiateViewControllerWithIdentifier("PushVC")
    let push = rVC as! PushVC
    self.window!.rootViewController = rVC

    if let aps = userInfo["aps"] as? NSDictionary {
        if let alert = aps["alert"] as? NSDictionary {
            if let message = alert["message"] as? NSString {
                push.addPushNote(message as String)
            }
        } else if let alert = aps["alert"] as? NSString {
            push.addPushNote(alert as String)
        }
    }
}

addPushNote 是我 ViewController 中的一种方法,用于将新通知添加到 table 视图:

public func addPushNote(message: String){
    pushNotes.append(message)
    table.reloadData()
    print(message)
}

当收到多条消息时,print(message) 会显示所有消息——但只显示第一条。 我怀疑,对于每个推送通知,消息都会添加到不同的 PushVC 实例。

非常感谢任何帮助。

这是因为您一次又一次更改根视图控制器的不同实例,我们有一个新的 VC 实例,您在其中拥有 table 视图。为了解决您的问题,请将所有通知保存在数组中并将该数组存储在用户默认值中。

稍后,每当有任何新通知到达时,首先从 UserDefaults 检索数组并将通知附加到那里,然后将该数组保存回 userdefaults。

还要确保将 table 视图的数据源作为您存储的 NSUserDefault 数组。

您还可以将通知存储在 CoreData、Sqlite 等中