首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当收到无声推送通知时执行几行代码,而app正在后台运行

当收到无声推送通知时执行几行代码,而app正在后台运行
EN

Stack Overflow用户
提问于 2015-01-05 10:06:39
回答 2查看 1.4K关注 0票数 0
代码语言:javascript
复制
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary     *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
    NSLog(@"PUSH NOTIFICATION %@",userInfo);


    if([userInfo[@"aps"][@"content-available"] intValue] == 1){

        NSLog(@"SILENT PUSH NOTIFICATION");

        //Here I'm inserting a flag value to my DB.

        completionHandler(UIBackgroundFetchResultNewData);

    }
    else{

        NSLog(@" GENERAL PUSH NOTIFICATION ");

        completionHandler(UIBackgroundFetchResultNoData);

    }
}

My silent notification payload is {
        aps =     {
            "content-available" = 1;
            sound = "";
        };
    }

为了支持,我在info.plist中添加了一个“必需的背景模式”的键。

项目0=响应推送通知而下载内容

此外,在功能部分,我的后台模式与远程通知检查标记被选中。

现在我的问题是,当我运行我的应用程序时,我能够接收到无声的和一般的推送通知,并且代码在前台模式下正在成功地执行,但是当我按home按钮(不是通过滑动它来强制退出,设备的密码锁也打开了),我的应用程序将进入后台模式,然后我的代码将无法执行,即使我能够接收到具有警告和声音的推送通知,但是应用程序没有在后台模式下启动。

我在想,对于前台和后台模式,当我的应用程序收到任何推送通知时,不管是无声的还是普通的推送通知,我在委托方法中的第一个日志都必须打印在控制台上,即NSLog(@"PUSH notification %@",userInfo);

请帮助我,从过去的2-3天开始,我一直在挣扎。

我的info.plist

EN

回答 2

Stack Overflow用户

发布于 2015-01-07 14:58:43

我所做的几乎完全一样的事情,除了我使用无声推送通知时,在应用程序的背景,并使用它来更新一些状态时,应用程序是在前景。我不注册背景抓取,只有“远程通知”。

@Paulw11 11是正确的,每次调用completionHandler时都需要调用didReceiveRemoteNotification。

我将检查您的plist,以确保您的背景模式配置正确。也许你可以把你的拼贴贴出来。

我的通知负载看起来和你的完全一样,所以我不认为这是问题所在。我最初有问题,因为有效载荷不完全正确。

记住,如果你杀死了应用程序(刷掉它),在应用程序重新启动之前,你不会收到无声的推送通知。

票数 0
EN

Stack Overflow用户

发布于 2015-01-08 09:48:03

我认为您需要在“aps”之外使用“”进行一次测试,如下所示:

代码语言:javascript
复制
aps = {
            alert = "This is test alert";
            badge = 1;
       };
"content-available" = 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27777216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档