如果应用不是 运行(Parse),则保存来自 ios 推送通知的数据

Save data from ios push notification if app is not running(Parse)

我正在使用解析推送通知服务。

如果我的应用程序是 运行 ,我会在以下委托函数中从我的通知中获取数据。

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
        PFPush.handlePush(userInfo)
        println(userInfo)  
        if application.applicationState == UIApplicationState.Inactive {

        }
    }

但如果我的应用不是 运行,并且生成通知,那么我不知道哪个函数用于生成该通知并从该通知获取数据。

您可以将通知保存到 NSUserDefaults 中,并在您的应用再次激活后检查 NSUserDefaults 中是否存储了任何新数据。我会创建一个 userInfo 对象数组并在您的数组中添加新条目。

您的应用再次激活后,您可以清除包含未看到通知的数组。

let defaults = NSUserDefaults.standardUserDefaults()

var unseenNotifications:[[NSObject: AnyObject]] = []
//Set
defaults.setValue(unseenNotifications, forKey: "unseen")

//Get
unseenNotifications = defaults.valueForKey("unseen") as! [[NSObject : AnyObject]]

不确定 Swift 或 Parse,但如果您使用 Objective-C,通知将通过以下方式传递给非 运行 应用程序:

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        NSDictionary *remoteNotify = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    }

假设用户打开了您的通知。

如果您的应用不是 运行(后台或前台),那么获取通知负载数据的唯一方法是当用户通过点击通知打开您的应用时。如果发生这种情况,您可以使用 didFinishLaunchingWithOptions 方法来检索数据。除此之外,存储负载数据的最佳方式是在发送通知时将其存储在服务器端数据库中。然后您可以随时发出检索通知的请求。这也将为您提供管理徽章计数的机制。