我正在使用解析推送通知服务。
如果我的应用程序正在运行,我会通过以下委托功能从我的通知中获取数据。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
PFPush.handlePush(userInfo)
println(userInfo)
if application.applicationState == UIApplicationState.Inactive {
}
}
但是如果我的应用程序没有运行,并且生成通知,那么我不知道,使用哪个函数来生成该通知并从该通知中获取数据。
答案 0 :(得分:2)
如果您的应用未运行(后台或前台),则获取通知有效内容数据的唯一方法是用户通过点击通知打开您的应用。如果发生这种情况,您可以使用didFinishLaunchingWithOptions
方法检索数据。除此之外,存储有效负载数据的最佳方法是在发送通知时将其存储在服务器端数据库中。然后,您始终可以请求检索通知。这也将为您提供管理徽章计数的机制。
答案 1 :(得分:0)
您可以将通知保存到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]]
答案 2 :(得分:0)
不确定Swift或Parse,但如果您使用的是Objective-C,则会通过以下方式将通知传递给非运行的应用程序:
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary *remoteNotify = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
}
假设用户打开了您的通知。