向知道电话号码的特定设备发送推送通知,parse.com

Posted

技术标签:

【中文标题】向知道电话号码的特定设备发送推送通知,parse.com【英文标题】:Sending push notification to specific device knowing phone number, parse.com 【发布时间】:2015-01-20 21:26:09 【问题描述】:

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

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

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

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

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

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

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

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

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

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

非常感谢!!

【问题讨论】:

所以朋友没有安装你的应用,对吧? (朋友必须安装您的应用才能接收推送通知。) 朋友确实有应用程序,如果他没有,那么他将不会存在于我在 parse.com 的数据库中 @Ramsel @LyndseyScott 也许你会知道这里发生了什么? ***.com/questions/28058127/… 很想在这里得到你的意见,因为你有这方面的经验:***.com/questions/28079184/…@LyndseyScott 【参考方案1】:

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

【讨论】:

哇...这真的很聪明,从来没有想过。这意味着我不需要将用户对象与安装对象相关联。非常感谢...另一个子问题呢。我需要将匿名用户设为真实用户还是应该保持这种状态? @Lyndsey Scott @TimoCengiz 如果您希望用户信息在注销后保留,您需要将匿名用户设置为真实用户。来自文档:“匿名用户是可以在没有用户名和密码的情况下创建但仍具有与任何其他 PFUser 相同的所有功能的用户。注销后,匿名用户被放弃,其数据不再可访问。” parse.com/docs/ios_guide#users-anonymous/iOS 但是为什么我在关闭应用程序后仍然可以在 Data/Users 数据库中看到匿名用户?还是关闭应用程序不算“注销” 不算“注销”。您必须致电logOut 将用户注销...我想从技术上讲,只要您不注销,您就可以将用户保持为匿名用户(从而避免用户正确登录)。 嗯,但这不是首选方式,对吧?以防万一,最好做正确的事?

以上是关于向知道电话号码的特定设备发送推送通知,parse.com的主要内容,如果未能解决你的问题,请参考以下文章

向 Parse 发送推送通知,如何在设备中接收它

使用 Facebook ID 向特定用户发送 Parse 推送通知无法在 Android 上运行

如何使用 GCM 和 java 向多个设备发送推送通知

在 PHP 中向特定用户推送通知

当用户到达特定位置时向用户发送推送通知 [IOS]

如何在 iOS 中使用 Google Firebase 向特定用户发送推送通知?