带有用户 ID 的 Bluemix 推送通知

Posted

技术标签:

【中文标题】带有用户 ID 的 Bluemix 推送通知【英文标题】:Bluemix Push Notification with userID 【发布时间】:2016-07-08 00:35:55 【问题描述】:

我正在使用最新的 Bluemix 推送通知服务。我正在使用 MFPPush API 来注册设备 (android)。

这是我的代码 sn-p:

var success = function(message) 
 
    console.log("Success: " + message);
    alert("Reg Device: " + message);
;
var failure = function(message) 
 
    console.log("Error: " + message); 
    alert("Error: " + message);
;
MFPPush.registerDevice(, success, failure);
var notification = function(notification)

    // notification is a JSON object.
    alert(notification.message);
;
MFPPush.registerNotificationsCallback(notification);

成功消息包含以下信息:

Token:APA91bFtkSr59Zxlr52HU****Uij
UserId: ""
DeviceId: g5c6d98f-0867-3fd1-a353-15bcdef675a2

当我发送通知时,我的设备会收到消息。

Swagger REST API 表明我可以任意给出一些令牌,userIddeviceId


  "deviceId": "TestDeviceId",
  "platform": "G",
  "token": "************",
  "userId": "Joe"

如何获取"TestDeviceId",以及如何获取"token"?我没有看到任何 API 来获取该信息。

【问题讨论】:

【参考方案1】:

注意:您可能应该只使用客户端 SDK 进行注册,因为它会在后台处理所有这些 - 自动为每个设备分配一个唯一的 ID。除非你知道你在做什么,否则你不应该探索这个。尝试手动设置 deviceID 并没有真正的理由。

当您为推送通知服务注册设备时,您在 POST 请求的正文中设置这些值。成功调用时,它将在响应中返回这些值。稍后我将在帖子中对此进行演示。

您还可以检索推送通知服务的设备注册列表。

您可以使用deviceId 检索有关设备的详细信息、向该设备发送特定推送通知、为其订阅标签并向这些设备发送推送通知等。

Swagger Documentation is here.


关于这些值,您可以在注册时将任何您想要的内容放入其中。通常,当您进行注册调用时,Bluemix Mobile Android/ios Client SDK 会自动设置这些值。但是,您可以使用 REST 客户端手动执行此操作。

例如:

在这里,我正在注册一个设备:

注册成功:

如果我向推送通知服务询问有关我注册设备的信息(对于"deviceId": "arandomdeviceid"),我会得到以下信息:

Android BMS Core Client SDK 使用来自设备的唯一 UUID 设置此 deviceId,并使用 MD5 对其进行哈希处理。

You can look in here more more information about that.

【讨论】:

我想使用MFPPush.register(, success, false) JS函数注册设备。我可以在 中传递我的 deviceId、userId 信息吗?如果是,我需要示例 JSON。 客户端 SDK 只是 REST API 的包装器。它不支持从 SDK 设置这些参数的能力。但是,您可以从您的应用程序发出 REST 请求以实现您想要的功能。 顺便问一下,你需要这个功能有什么原因吗?我认为您可能会给自己造成比您需要的更多的麻烦。 我认为使用客户端 SDK 比理解 REST API 并确保传递所有信息(如 appSecret、应用程序 ID 等)更容易。我看不出拥有客户端 SDK 的意义如果我不能传递这些信息。我理解如果有人不需要传递任何信息,可以打一个简单的电话,但它应该确保它涵盖了 REST 可以完成的所有事情。这就是包装器的重点,它向最终用户隐藏了复杂性。它看起来像一个半生不熟的工作。希望客户端 SDK 开发人员观看这篇文章并做必要的事情。谢谢 Client SDK 包含注册、接收推送通知、获取标签、订阅标签等所需的所有代码。您似乎在这里寻找的是扩展的、复杂的行为,从开发人员,深入核心 SDK。您可以通过使用简单的 REST 调用来实现此扩展行为,但我想不出开发人员为什么要手动设置唯一的 deviceId 的用例(这就是为什么它不在客户端 SDK 中规范)。【参考方案2】:

@anamica (a) 允许 userId 参数与 MFPPush 注册一起传递,例如 MFPPush.register("userId": "AUniqueUserId", success, failure) (b) 向目标“userIds”添加附加参数“ (大批)。 此增强已完成,您可以通过更新最新的 SDK 来尝试。

【讨论】:

以上是关于带有用户 ID 的 Bluemix 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

Bluemix 推送通知服务不再工作?

手机操作系统中显示的 Bluemix 推送通知在单击时不会启动应用程序

IBM Bluemix 通过 PHP 代码推送通知

适用于 Android 的 Bluemix 推送通知未发送任何通知

Bluemix 推送通知服务 - 不推荐使用 App Route 参数

使用 IBM Worklight 和 IBM Bluemix 推送通知