带有用户 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 表明我可以任意给出一些令牌,userId
和 deviceId
:
"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 推送通知在单击时不会启动应用程序
适用于 Android 的 Bluemix 推送通知未发送任何通知