Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 后台刷新完成前显示的推送通知(使用后台刷新推送)_Ios_Objective C_Apple Push Notifications - Fatal编程技术网

Ios 后台刷新完成前显示的推送通知(使用后台刷新推送)

Ios 后台刷新完成前显示的推送通知(使用后台刷新推送),ios,objective-c,apple-push-notifications,Ios,Objective C,Apple Push Notifications,我正在尝试设置我的应用程序,以便在收到推送消息时,它首先获取新消息,然后再显示推送通知。在推送通知中,我设置了可用内容=1,并且在Plist中启用了开关。我已实施: - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result)

我正在尝试设置我的应用程序,以便在收到推送消息时,它首先获取新消息,然后再显示推送通知。在推送通知中,我设置了可用内容=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);

        }];




    }
}

应用程序推送将在后台完成之前或刷新期间进入。当然,它应该在之后到来。我是不是处理错了?我是否需要发送静默推送通知,并在完成块后显示
本地
通知?

我遇到了与您类似的问题,
我通过发送这样的推送通知解决了这个问题

{
        "alert": null,
        "content-available": 1,
        "data-id" : "some_data_id"
}
在这种情况下,将不显示推送通知,
因此,在后台获取中,您可以执行获取并触发本地通知。

本地通知可以立即触发吗?本地通知是否需要与推送通知相同的权限?我的应用程序询问用户是否允许使用推送通知,这与本地权限相同?是否可以立即触发本地通知>>是的,本地通知不需要任何权限,但您需要权限,因为您也会收到远程通知。啊,对不起。似乎在iOS8上本地通知需要一些权限,请检查这有点混乱不?让应用程序请求远程通知和本地通知的权限…担心这会让用户却步..我认为这是相同的权限。如果远程推送通知覆盖您,那么本地推送通知也覆盖您。