2017-03-10 80 views
1

我在我的项目中第一次使用onesignal。我必须发送通知给特定用户(无论用户在chrome还是android设备上登录),例如whatsapp在移动设备和网站上发送通知,以及仅在用户登录时发送通知。我已成功向所有用户发送通知用户。在OneSignal上的一些R后,我知道我必须为此发送通知给特定的playerId。但这里有一些我的疑问/疑问。使用onesignal向特定用户发送通知

  • 我认为玩家ID是设备ID。如果我是对的,如果当前用户注销并且另一个用户在同一设备上登录,该怎么办?我怎么才能知道我没有在用户改变的时候发送这个玩家ID的通知。
  • 单用户会有多个playerIds吗?一个用于Chrome,一个用于iOS设备,一个用于Android等?
  • 我将如何让用户的playerId存储在我的数据库中。因为我必须使用server rest API发送通知。

如果任何人都可以解释这些观点,并且还描述了将数据库中存储playerid(何时以及如何)的工作流程,那么我们将不胜感激。

回答

3

只需将playerIds存储到数据库并进行登录活动即可。当他们注销只是发起一个查询有关从数据库中删除playerIds。

1

我开发了一个不久前使用OneSignal进行通知的android应用程序。这是用C#开发的,但可能对你有用。

我希望这些答案的帮助:

-The玩家ID由OneSignal类产生的,因此需要使用回调函数,如代码所示以下检索:

void CheckPushRegistration(){ 
    OneSignal.GetIdsAvailable(IdsAvailable); //Passes the 'callback' 

} 

private void IdsAvailable(string userID, string pushToken) { 
    player_id = userID; 
    player_token = pushToken; 

    //Make a request to my server to store this information along with device id 
    //For easy reference 
} 

注意:在上面的代码中,我在应用程序运行开始时调用了函数'CheckPushRegistration'。一旦运行,它会将信息发送到'IdsAvailable'功能。在此之后,我向我的服务器发出一个快速Web请求,以存储唯一的播放器ID,设备ID和令牌。

- 如果我没有弄错,玩家ID至少在android中基于与Google Play帐户关联的设备。意思是如果用户切换帐户,它将计数/充当不同的播放器ID(但我可能在这里是错误的)

我假设OneSignal有一些确定浏览器/其他设备上播放器ID或用户ID的方法。但是,假设它们将始终是唯一的,并且不会基于用户帐户进行传输。

- 如前所述,您通过向REST API发出简单的Web请求将其存储到数据库中,仅存储设备ID,播放器ID和令牌信息。也许添加一个检查来查看设备ID是否已经不在系统中。我会建议使用设备ID来识别用户。

您还问过如何知道通知是否正确发送,或者发送是否安全。不幸的是,OneSignal API只能报告通知状态。

当您发送通知时,您将收到服务器返回的通知ID。您可以在稍后阶段使用此功能来检查通知是否已发送,是否已查看以及是否已点击。

我希望这可以帮助我们了解OneSignal系统?

+0

如果另一个用户在同一个应用程序中登录,那么userId的值是什么?它会改变还是一样? –

+0

根据我的理解,用户ID将在玩家账户更改时发生变化。这意味着如果用户从同一设备登录到不同的帐户,它将作为单独的用户ID计数。 –

+0

因此,我建议您还要跟踪设备ID,以便您可以将通知发送到同一设备的所有播放器ID。 (这是我所做的) –

相关问题