我在后台和前台都成功获得了推送通知,但我的问题是当我的应用程序处于活动状态/前台并且推送通知到达时,我使用didReceiveRemoteNotification
在alertview上显示此推送通知消息方法,
我的提醒视图有两个按钮
1)稍后
2)好的。
如果我按1)"稍后"按钮然后我想在通知区域中添加此推送消息,以便用户可以看到并点击该特定推送通知并继续使用该推送通知的记录将从通知区域中删除。
答案 0 :(得分:1)
这是不可能的。 iOS没有访问通知的API。
<强>替代强> 您可以尝试的替代方案是本地通知。当用户选择稍后为该事物设置本地通知时。当用户离开您的应用时,您可以添加此本地通知,以便在用户继续使用您的应用时不会收到通知。
更好的方法 此问题的最常用方法是应用程序中的通知屏幕。您的应用程序有一个屏幕,其中包含已接收通知的列表,以便用户可以在您的应用程序中检查我建议你顺其自然。因为这是最常见和最明确的想法。
答案 1 :(得分:1)
您需要为通知实施核心数据,但只有在您的应用程序处于活动状态时才会发生。
1 - 每次新通知到达时创建新身份。 2 - 保存它。
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSDictionary *Notification = userInfo;
NSString *title = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"title"];
NSString *body = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"body"];
XXNotification *objNotification = [XXNotification create];
objNotification.title = title;
objNotification.detail = body;
[XXNotification save:nil];
NSArray *arrNotification =[XXNotification allUnRead:nil];
[UtilityFunctions setApplicationBadgeNumber:[arrNotification count]];//Utility functions is my class for common functions.
if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive)
{
[UtilityFunctions showAlertView:title message:body delegate:self cancelButtonTitle:@"Ok" otherButtonTitle:@"Cancel" withTag:99 withAccessibilityHint:[NSString stringWithFormat:@"%@:|:%@", title,body]];
}
else if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateInactive || [[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
{
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.userInfo = userInfo;
localNotification.soundName = UILocalNotificationDefaultSoundName;
localNotification.alertBody = body;
localNotification.fireDate = [NSDate date];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
if (![IsLocationSaved isEqualToString:@"NO"])
{
[[NSNotificationCenter defaultCenter]postNotificationName:kNotificationForShowingNotification object: nil userInfo:nil];
}
}
}
在显示UIAlertView时,在其click事件中删除DB中的通知或将其作为isRead在其中生成bool并使其为YES。然后保存它,
On Notifications列表查询来自DB的通知或仅查询isRead = NO。
的通知这就是我在“我的应用程序”中执行此操作的方式。