我开发了一个不久前使用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系统?
如果另一个用户在同一个应用程序中登录,那么userId的值是什么?它会改变还是一样? –
根据我的理解,用户ID将在玩家账户更改时发生变化。这意味着如果用户从同一设备登录到不同的帐户,它将作为单独的用户ID计数。 –
因此,我建议您还要跟踪设备ID,以便您可以将通知发送到同一设备的所有播放器ID。 (这是我所做的) –