【问题标题】:Parse Push Notification in Objective-C在 Objective-C 中解析推送通知
【发布时间】:2015-07-20 18:28:48
【问题描述】:

我正在尝试使用 Parse.com SDK 实现 iOS 推送通知。 问题是,有时推送通知不会在没有任何错误日志的情况下发送。我已将代码更改为:

- (IBAction)send:(id)sender {
    PFQuery *usernameQuery = [PFUser query];
    [usernameQuery whereKey:@"objectId" containedIn:self.recipients];

    PFQuery *pushQuery = [PFInstallation query];
    [pushQuery whereKey:@"user" matchesQuery:usernameQuery];

    PFPush *push =[[PFPush alloc] init];
    [push setQuery:pushQuery];
    [push setMessage:[NSString stringWithFormat:@"%@: %@", [PFUser currentUser].username, self.kwik]];
    [push sendPushInBackground];

    [self.navigationController popToRootViewControllerAnimated:YES];

    NSLog(@"%p", push);
}

我不知道每次用户发送推送时分配的 PFPush 是否仍然存在此问题。 在我将代码更改为这个之前,我在 viewDidLoad 方法中调用了self.push = [[PFPush alloc] init];,因为由于内存使用,我不喜欢每次用户发送推送通知时都分配一个新的 PFPush。 我现在的问题是:每次用户发送推送时分配一个新的 PFPush 对象是否重要,或者我可以在 viewDidLoad 方法中分配它吗?

【问题讨论】:

  • 在一个 ARC 项目中,可能是你的项目,分配而不被其他东西保留的东西(如强实例变量或放置在本身被保留的集合中)将在它们被释放后立即被释放超出范围。您不必担心 OP 中分配的推送。只要需要推动,它就会持续。
  • 谢谢@danh,这对我很有帮助。很遗憾,我无法将您的评论标记为最佳答案。
  • 很高兴为您提供帮助。我没有给出答案,因为如果您也遇到问题推送,内存管理建议只是答案的一半。试图在答案中解决这两个问题。

标签: ios objective-c memory parse-platform push-notification


【解决方案1】:

行:

PFPush *push =[[PFPush alloc] init];

创建一个对象,但对它的引用是短暂的(完成异步推送请求所需的时间),并且在 ARC 项目中,将在编译时插入代码以释放它,因此无需担心内存分配。

在推送发送时您可能遇到了不相关的问题。一种调试方法是使用block variety of push in background called sendPushInBackgroundWithBlock。这样你就可以检查错误是否有。

【讨论】:

  • 这是错误日志,我已记录并返回 Array 和给定的错误 userInfo: Error userInfo: { NSLocalizedDescription = "客户端不允许对安装集合执行查找操作。";代码 = 119; error = "不允许客户端对安装集合执行查找操作。"; originalError = "Error Domain=NSURLErrorDomain Code=-1011 \"操作无法完成\U2019。 (NSURLErrorDomain 错误 -1011.)\"";临时= 0; 2015-07-21 20:32:24.296 TestApplication[1411:46433](空)。但是之前仍然发送了 10/10 推送。
  • 好的。我想这是有道理的。我在云代码中做过类似上述的事情,您可以在其中使用 useMasterKey 绕过(合理的)安全约束。我将进行编辑以删除该部分建议。至少 send 方法中的错误检查仍然有用。
  • 是的,我还认为这将是错误输出,因为我已经阅读了一些关于此的内容。但还有一个问题:我在此处编写的相同功能(用户到用户推送通知)是否可以在云代码中使用?
  • 肯定的。您从客户端开始的推送从解析端到 APN 的连接开始。
猜你喜欢
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多