向知道 phone 号码、parse.com 的特定设备发送推送通知

Sending push notification to specific device knowing phone number, parse.com

我只是想把这里的事情弄清楚,或者如果可能的话得到其他更好的建议。

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

1) 如果用户是第一次打开应用程序,则创建匿名用户

2) Phone 需要进行验证。如果通过验证,我将 phone 号码保存在用户对象的自定义字段中(在此之后我需要让这个用户成为真实用户还是我仍然可以使用匿名用户?)(验证当然只有一次)

3) 用户将能够从他的联系人列表 (ABPeoplePicker) 中选择一个朋友,然后将推送通知发送到该朋友的设备。

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

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

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

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

还有一个上面提到的子问题,如果我需要将匿名用户变成真实用户。

非常感谢!!

我建议为每个用户订阅他们自己的频道,频道名称等于他们的 phone 号码(无法在 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
  }
});