后台刷新完成前显示的推送通知(使用后台刷新推送)
Push notification showing before background refresh finished (using Push with background refresh)
我正在尝试设置我的应用程序,以便在收到推送时首先获取新消息,然后再显示推送通知。在我的推送通知中,我设置了 content-available = 1 以及在 Plist 中启用的开关。我已经实施:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{
if([[userInfo objectForKey:@"aps"] objectForKey:@"content-available"]){
NSLog(@"Doing the background refresh");
UINavigationController *navigationController=(UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController];
MYViewController *MYViewController = (MYViewController *)[[navigationController viewControllers] objectAtIndex:1];
[myViewController.currentUser refreshMessagesArrayWithCompletionHandler:^(BOOL successful, BOOL newMiaos) {
NSLog(@"messages refreshed the array now has %lu messages",(unsigned long)[myViewController.currentUser.messages count]);
handler(UIBackgroundFetchResultNewData);
}];
}
}
应用推送将在后台完成之前或刷新期间进来。当然它应该在后面。我处理这个错误吗?我是否需要发送静默推送通知并在完成块后显示 local
通知?
我遇到了和你类似的问题,
我通过发送这样的推送通知解决了这个问题
{
"alert": null,
"content-available": 1,
"data-id" : "some_data_id"
}
在这种情况下不会显示推送通知,
所以在后台获取你可以执行获取并触发本地通知。
我正在尝试设置我的应用程序,以便在收到推送时首先获取新消息,然后再显示推送通知。在我的推送通知中,我设置了 content-available = 1 以及在 Plist 中启用的开关。我已经实施:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{
if([[userInfo objectForKey:@"aps"] objectForKey:@"content-available"]){
NSLog(@"Doing the background refresh");
UINavigationController *navigationController=(UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController];
MYViewController *MYViewController = (MYViewController *)[[navigationController viewControllers] objectAtIndex:1];
[myViewController.currentUser refreshMessagesArrayWithCompletionHandler:^(BOOL successful, BOOL newMiaos) {
NSLog(@"messages refreshed the array now has %lu messages",(unsigned long)[myViewController.currentUser.messages count]);
handler(UIBackgroundFetchResultNewData);
}];
}
}
应用推送将在后台完成之前或刷新期间进来。当然它应该在后面。我处理这个错误吗?我是否需要发送静默推送通知并在完成块后显示 local
通知?
我遇到了和你类似的问题,
我通过发送这样的推送通知解决了这个问题
{
"alert": null,
"content-available": 1,
"data-id" : "some_data_id"
}
在这种情况下不会显示推送通知, 所以在后台获取你可以执行获取并触发本地通知。