将推送通知发送到特定设备,了解电话号码,parse.com

时间:2015-01-20 21:26:10

标签: javascript ios parse-platform subquery

如果可能的话,我会在这里明确一些事情,或者在可行的情况下获得其他建议。

这就是我的应用程序现在的工作方式:

1)如果用户第一次打开应用程序

,则会创建匿名用户

2)需要进行电话验证。如果验证,我将电话号码保存在用户对象的自定义字段中(我是否需要在此之后使该用户成为真正的用户,或者我仍然可以与匿名用户一起使用?)(当然只有一次验证)

3)用户可以从他的联系人列表(ABPeoplePicker)中挑选一位朋友,然后向该朋友的设备发送推送通知。

现在我已经使用以下代码与用户和安装对象建立了关系:

PFInstallation *installation = [PFInstallation currentInstallation];
installation[@"user"] = [PFUser currentUser];
[installation saveInBackground];

这创建了一个指向用户ObjectId的指针

所以我的问题是如何创建查询并向从该用户朋友列表中检索到的号码发送推送通知?我很难连接我如何从电话号码到我需要发送通知的安装设备。如果您可以在javascript中提供帮助,因为我阅读它通过云代码发送它更安全!

如果我需要将匿名用户设置为真实用户,也是上面提到的一个子问题。

非常感谢!!

1 个答案:

答案 0 :(得分:2)

我建议将每个用户订阅到他们自己的频道,频道名称等于他们的电话号码(订阅无法在Javascript中完成):

NSString *userPhoneNumber = ... 

PFInstallation *currentInstallation = [PFInstallation currentInstallation];
// "x" added to the beginning of the userPhoneNumber since
// Parse doesn't allow channels to begin with a number
[currentInstallation addUniqueObject:[NSString stringWithFormat:@"x%@", userPhoneNumber] forKey:@"channels"];
[currentInstallation saveInBackground];

这样在推送通知之前不需要查询:

var friendPhoneNumber = ...
var friendChannel = "x" + friendPhoneNumber;
Parse.Push.send({
  channels: [ friendChannel ],
  data: {
    alert: message
  }
}, {
  success: function() {
    // Push was successful
  },
  error: function(error) {
    // Handle error
  }
});