Ios 未调用应用程序didReceiveRemoteNotification

Ios 未调用应用程序didReceiveRemoteNotification,ios,objective-c,parse-platform,push-notification,apple-push-notifications,Ios,Objective C,Parse Platform,Push Notification,Apple Push Notifications,我正在使用Parse的推送框架实现推送通知。我已经按照Parse指示设置了应用程序委托中的所有内容。我知道它正在工作,因为当我运行代码解析提供的示例时,推送通知工作正常(当我在didReceiveMemotentification中放置断点时,我可以看到它被调用) 当我在我的应用程序中运行上述代码时(按测试按钮),我立即收到一个通知,上面写着“Hello World”。因此后端工作正常,我能够接收通知 这是我最终想要运行的代码: PFQuery* usersQuery = [PFUser que

我正在使用Parse的推送框架实现推送通知。我已经按照Parse指示设置了应用程序委托中的所有内容。我知道它正在工作,因为当我运行代码解析提供的示例时,推送通知工作正常(当我在
didReceiveMemotentification
中放置断点时,我可以看到它被调用)

当我在我的应用程序中运行上述代码时(按测试按钮),我立即收到一个通知,上面写着“Hello World”。因此后端工作正常,我能够接收通知

这是我最终想要运行的代码:

PFQuery* usersQuery = [PFUser query];
PFQuery* pushQuery = [usersQuery whereKey:@"joinedIDsAr" containsAllObjectsInArray:[[NSArray alloc] initWithObjects:myID, nil]];   //get all users who subscribed to my broadcast 

//NSArray* usersAr = [pushQuery findObjects];

[PFPush sendPushMessageToQueryInBackground:pushQuery
                               withMessage:[NSString stringWithFormat:@"%@ has a new message for you to share!", myDisplayName]
                                block:^(BOOL succeeded, NSError * __nullable error)
                                {
                                    if(succeeded)
                                    {
                                        NSLog(@"Success!");
                                    }
                                    else
                                    {
                                        NSLog(@"ShareScheduleVC::sendSharePushNotif: error: %@", error);
                                    }
                                }];
当上面的代码执行时,我得到了成功消息(错误总是为零)。但是,
didReceiveMemotentification
中的断点未命中,并且我没有收到推送通知。带有
usersAr
的注释行是我尝试测试查询是否检索到正确的对象;是的,我的PFUser对象被返回了。所以问题不是一个空查询

我知道在最初的测试代码和我上面的代码之间做了很多更改,所以我以Parse的示例代码为例,简单地更改了一行和消息文本:

PFQuery* usersQuery = [PFUser query];
PFQuery* pushQuery = [usersQuery whereKey:@"joinedIDsAr" containsAllObjectsInArray:[[NSArray alloc] initWithObjects:myID, nil]];   //get all users who subscribed to my broadcast 

// Send push notification to query
[PFPush sendPushMessageToQueryInBackground:pushQuery
                               withMessage:[NSString stringWithFormat:@"%@ has a new message for you to share!", myDisplayName]];
我也有同样的问题
DidReceiveMemotentification
未被调用,我可以确认我的查询包含我的PFUser对象,并且我没有收到任何通知

我在拔头发。。。还有其他人有这个问题吗?还是能发现我犯的明显错误?任何关于从哪里开始的线索都将不胜感激。所有这些都是在我创建推送通知后立即发生的,而我的应用程序正在运行。。。没有在后台跑步的问题,我还没走那么远!我只想能够发送一个自定义通知


(此外,我可以自由更改消息文本而不会引起问题……只有当我修改查询以查找除
deviceType
以外的其他内容时,我才会遇到问题。但我可以看到查询不是空的!目前我唯一的猜测是,不知何故,我的PFUser对象没有连接到我的设备,所以即使它正在查找对于我的用户帐户,它找不到我的设备。但是为什么测试代码可以工作呢?

你确定第一个查询可以像粘贴它一样工作吗?我很惊讶它可以工作,因为你应该为推送查询提供PFInstallation对象,而不是PFUser对象。@rickerbh我确定,是的。我已经用PFInstallation和pft两种方法尝试过了Parse的文档说使用[PFUser query]当你想要PFUser对象时,我改变了它,但它仍然完全一样,这对我来说是另一个困惑的来源…我正在阅读PFUser安装上的文档,据我所知,它显示了设备上当前安装的值?所以我甚至不知道它如何查询服务器上存在的所有用户…这是这个问题让我感到困惑。我认为最好从解析的云代码发送推送通知,实现一个自定义的云代码功能,确保它能工作,其次更安全(禁止从解析设置帐户中的客户端发送推送通知)。因此,只需发送订阅用户的objectId列表,云功能就会为您完成工作。如果您计划在不同的平台(如Android)上也这样做,这可能会很有用,因为服务器端推送是否会显示在推送数据浏览器中?请您制作一个屏幕截图,以便我们可以看到准确的推送数据瞄准?
PFQuery* usersQuery = [PFUser query];
PFQuery* pushQuery = [usersQuery whereKey:@"joinedIDsAr" containsAllObjectsInArray:[[NSArray alloc] initWithObjects:myID, nil]];   //get all users who subscribed to my broadcast 

// Send push notification to query
[PFPush sendPushMessageToQueryInBackground:pushQuery
                               withMessage:[NSString stringWithFormat:@"%@ has a new message for you to share!", myDisplayName]];