使用 onesignal 向特定用户发送通知

Send Notification to specific user using onesignal

我第一次在我的项目中使用 onesignal。我必须向特定用户发送通知(无论用户在 chrome 或 android 设备上登录)某些事件,例如 whatsapp 也会在移动设备和网站上发送通知,并且仅当用户已登录时. 我已成功向所有用户发送通知。在对 OneSignal 进行一些研发之后,我开始知道我必须为此目的向特定的 playerId 发送通知。但这里有一些我的 questions/doubts.

如果有人能解释这些要点并描述在我的数据库中存储播放器 ID(何时以及如何)的工作流程,我们将不胜感激。

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

希望这些回答对您有所帮助:

-Player ID 由 OneSignal class 生成,因此需要使用回调函数检索,例如下面的代码:

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 如果我没记错的话,播放帐户。这意味着如果用户切换帐户,它将 count/act 作为不同的玩家 ID(但是我在这里可能是错的)

我假设 OneSignal 有某种方法可以确定 browsers/other 设备上的玩家 ID 或用户 ID。然而,可以安全地假设它们将始终是唯一的,并且不会根据用户帐户进行。

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

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

当您发送通知时,您会从服务器收到一个通知 ID。您可以在稍后阶段使用它来检查通知是否已发送、是否被查看以及是否被点击。

我希望这有助于阐明 OneSignal 系统?

只需将 playerIds 存储到数据库中并登录 activity。当他们注销时,只会触发与从数据库中删除玩家 ID 相关的查询。

玩家ID不是设备ID, 这是OneSignal给的一个UUID(Unique Universal Identifier)

在一台设备上管理多个用户 要管理共享设备的多个用户,您需要检测用户 A 何时在设备上,并且仅在他们在设备上时向他们发送通知,否则用户 B 会收到通知。

方法A:标记 处理此问题的一种方法是在用户登录应用程序时标记用户,然后您可以通过标记来定位他们,如果设置了标记,他们将收到通知。一旦他们退出应用程序,您就可以删除标签。

因此,如果用户 B 正在使用该设备,那么他们将获得自己的标签,并且不会收到用户 A 的通知。 因此,用户只有在登录到应用程序时才会收到通知。

方法 B:CRM 或数据库 另一种选择是在您的服务器上存储用户当前登录设备的播放器 ID,然后使用我们的 API 通过 "include_player_ids" API 目标参数发送通知。 有关详细信息,请查看此 One signal player id