本教程演示了如何从应用程序服务器发送推送通知的应用程序。 热身熟悉的API通过学习基本知识: 发送推送通知使用Tizen推动api,您可以到您的应用程序安装在Tizen设备发送通知。 发送推送通知的基础上的 推教程。 这个用例涵盖了更高级的信息,比如在一个请求中发送多个通知和发送广播通知。 发送推送通知: - 确定RQM服务器。
请求管理器(RQM)服务器之前收集你的推送通知发送给应用程序。 RQM服务器必须首先选择基于2位数的注册ID。 表:RQM服务器前缀的regId | 地区 | URL | 00 | US East | https://useast.push.samsungosp.com:8090/spp/pns/api/push | 02 | 亚洲太平洋东南部 | https://apsoutheast.push.samsungosp.com:8090/spp/pns/api/push | 03 | 欧洲西部 | https://euwest.push.samsungosp.com:8090/spp/pns/api/push | 04 | 亚洲太平洋东北部 | https://apnortheast.push.samsungosp.com:8090/spp/pns/api/push | 05 | 韩国 | https://apkorea.push.samsungosp.com:8090/spp/pns/api/push | 06 | 中国 | https://apchina.push.samsungosp.com.cn:8090/spp/pns/api/push | 50 | US East | https://useast.gateway.push.samsungosp.com:8090/spp/pns/api/push | 52 | 亚洲太平洋东南部 | https://apsoutheast.gateway.push.samsungosp.com:8090/spp/pns/api/pus | 53 | 欧洲西部 | https://euwest.gateway.push.samsungosp.com:8090/spp/pns/api/push | 54 | 亚洲太平洋东北部 | https://apnortheast.gateway.push.samsungosp.com:8090/spp/pns/api/push | 55 | 韩国 | https://apkorea.gateway.push.samsungosp.com:8090/spp/pns/api/push | 56 | 中国 | https://apchina.gateway.push.samsungosp.com.cn:8090/spp/pns/api/push |
- 创建通知消息。
消息是一个字段,构成一个通知。 消息字段包含不仅消息显示在设备上的快速面板,而且设备必须采取的行为时接收通知。 消息字段是一个字符串,该字符串包含键值对。 可用的选项在下表中给出。 表:消息字段键-值对关键 | 价值 | 描述 | action/行动 | 警报ALERT:存储消息并提醒用户。沉默SILENT:存储消息没有提醒用户。 丢弃DISCARD:丢弃消息。 发射LAUNCH:强行启动应用程序并提供通知。 | 行动,如果应用程序没有运行。 如果没有行动的定义,默认行为 沉默。 | alertMessage | 最高可达127个字节 | 报警信息显示给用户的快速面板。 如果未设置操作 警报 ,这个值是没有意义的。 | badgeOption | 增加INCREASE:徽章数量增加给定的值。减少DECREASE:给定值的徽章数量减少。 SET :徽章数量设置为给定的值。
| 选择更新图标徽章数量。 如果设置了行动 丢弃 , badgeOption将被忽略。 如果不包括徽章选项,图标徽章数量保持不变。 | badgeNumber | 0 - 999 | - - - - - - |
例如,显示“嗨”消息在快速面板和徽章计数增加1通知到达设备时,消息的通知必须在以下领域: "badgeOption=INCREASE&badgeNumber=1&action=ALERT&alertMessage=Hi"消息字段只有当应用程序没有运行生效(更准确地说,当应用程序不是连接到推动服务)。 如果通知上述消息字段到达设备的应用程序正在运行,推动服务提供直接通知应用程序。 它不显示“嗨”消息在快速面板或徽章数增加。 - 使用Rest api发送推送通知。
- 单一的请求
创建消息字段,您可以使用JSON构造一个通知查询并将其发送到RQM服务器使用POST方法。 下面的列表包含的细节:
- URI:URI RQM服务器的选择基于前两位数的注册ID
- 方法:文章
- JSON数据:
- 描述:请求通知推的推服务器推送服务
- 注:总请求消息体必须小于系统默认值,200 kb。 如果不是,“3034 -太久春消息数据误差”返回。 根据需要可以更改系统默认值。
- 头
有两个必需的字段: appID 和 appSecret 。 给定的字段是注册应用程序时,他们用于应用程序的身份验证。 如果丢失,服务器拒绝请求并返回“3046 -错误的应用程序认证”错误。 把这两个参数对请求头。 - 参数
参数表:KEY | 描述 | 额外的信息 | | 编码定义了如何 regId 编码。在大多数情况下,推动服务器问题regId 默认为十六进制字符串,但如果第三方提供商使用base64编码的状态 regId 在应用程序注册一次,regId 是base64编码。
如果 regId 是base64编码,使用“base64” 这个领域的价值。 否则,离开这一领域的空白,让服务器来处理 regId 作为一个十六进制字符串。
| | regID | 区分接收方从其他收件人分配一个惟一的注册ID每个收件人。注册ID分配当应用程序被安装在一个设备和使用应用程序服务。
当前注册ID传递政策如下(在未来可以改变):
- 加载推服务连接到推服务器和应用程序注册。
- 把服务器返回注册ID推送服务。
- 推动服务将ID传递给应用程序。
- 推动服务器将注册ID传递给应用服务器。在其他应用程序中,应用程序将注册ID传递到应用程序服务器。
| | requestID | 应用程序服务器需要为每个请求分配一个请求ID。 它使您能够区分一个请求从别人。 | | 发送方 | 信息的用户发送通知。 | | 消息 | 消息发送方想交付。 它可以是一个多字节字符。消息从一个应用程序服务器通过推动服务器,推动服务应用程序,从而处理消息。
最大消息长度必须小于2 kb。 如果没有消息,确保 appData ,服务器拒绝的消息,并返回一个错误。
| - 有条件地强制(如果 appData是空的,这个领域是必需的)
- 类型:字符串
- 默认值:空
| appData | 应用程序可以使用这个字段携带自己的数据。 这些数据的处理取决于类型的定义 类型 关键。确保如果没有消息,也没有 appData,服务器拒绝的消息,并返回一个错误。
| - 有条件地强制(如果消息为空,该字段是必需的)
- 类型:字符串
- 默认值:空
| reliableOption | 可靠的消息传递,如果推动服务器担保 reliableOption 是集。可能的选项是: - NoReliable :不要发送任何应答,一个应用程序服务器,不存储在推动服务器通知如果推动服务没有收到通知。
- 运输 :应用服务器发送一个应答时,推动服务接收通知。
这是一个可选的字段,如果它不存在,服务器应用其默认值( 运输 )。 承认这一点并不意味着通知请求的响应,但承认,推动服务已收到通知。 推动服务接收通知时,推送服务器发送这个承认一个JSON格式的应用程序服务器通过HTTP。
| | sessionInfo | 应用程序的连接信息。 第三方应用程序可以定义这个领域。 | | 时间戳 | 通知请求时服务器时间以毫秒为单位。 | |
下面的例子说明了通知: - 例头:appID: 1234567890987654appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc=
- 示例请求:
{ "encoding": "base64" // Optional "regID": "ab123456", "requestID": "0000001", "sender": "oscal", // Optional "type": 0 //Optional "message": "badgeOption=INCREASE&badgeNumber=1&action=ALERT&alertMessage=Hi", // Optional "appData": "{id:asdf&passwd:1234}", // Optional, (Opaque) "sessionInfo": "002002", // Optional "timeStamp": 1234567890, // Optional} - 示例响应:
如果推送服务器接收通知请求,服务器返回一个JSON字符串,其中包含 regID , requestID 、状态代码和状态信息。 如果请求包含一个JSON格式畸形,请求不加工,没有返回 regID 和 requestID 值。 如果请求是JSON格式的,但无效的数据,没有请求处理和被认为是一个错误。 响应消息只显示收到通知请求是否成功。 响应消息不处理是否推动服务接收通知。 响应消息的顺序是一样的请求消息的顺序。
- 多个请求
您可以构建一个多个请求在Rest API调用。 目前,这个功能不支持注册id从5开始。 下面的列表包含的细节:
- URI:URI RQM服务器的选择基于前两位数的注册ID
- 方法:文章
- JSON数据:
- 描述:请求通知推的推服务器推送服务
- 论点:看到 单一的请求
- 注:总请求消息体必须小于系统默认值,200 kb。 如果不是,“3034 -太久春消息数据误差”返回。 根据需要可以更改系统默认值。
- 例头:
appID: 1234567890987654appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc= - 示例请求:
{ "messages": [{ "encoding": "base64" // Optional "regID": "ab123456", "requestID": "0000001", "sender": "oscal", // Optional "type": 0 // Optional "message": "example", // Optional "appData": "{id:asdf&passwd:1234}", // Optional, (Opaque) "reliableOption": "Transport", // Optional "sessionInfo": "192.168.0.1-8080-12345567", // Optional "timeStamp": 1234567890, // Optional } { "encoding": "base64" // Optional "regID": "ab234567", "requestID": "0000002", "sender": "oscal", // Optional "type": 0 // Optional "message": "example", // Optional "appData": "{id:asdf&passwd:1234}", // Optional, (Opaque) "reliableOption": "Transport", // Optional "sessionInfo": "192.168.0.1-8080-12345567", // Optional "timeStamp": 1234567890, // Optional ]}} - 示例响应:
- 多播
您可以构建一个多播将推送通知发送到多个应用程序。 目前,这个功能不支持注册id从5开始。 下面的列表包含的细节:
- URI:URI RQM服务器的选择基于前两位数的注册ID
- 方法:文章
- JSON数据:
- 描述:请求通知推的推服务器推送服务
- 论点:看到 单一的请求
- 注:总请求消息体必须小于系统默认值,200 kb。 如果不是,“3034 -太久春消息数据误差”返回。 根据需要可以更改系统默认值。
- 例头:
appID: 1234567890987654appSecret: dYo/o/m11gmWmjs7+5f+2zLNVOc= - 示例请求:
{ "messages": [{ "encoding": "base64" // Optional "regID": ["ab123456", "ab234567", "ab345678" "requestID": "0000001", "sender": "oscal", // Optional "type": 0 // Optional "message": "example", // Optional "appData": "{id:asdf&passwd:1234}", // Optional "sessionInfo": "192.168.0.1-8080-12345567", // Optional "timeStamp": 1234567890, // Optional ]}} - 示例响应:
处理错误代码如果发送推送通知请求失败由于某种原因,响应消息包含一个错误代码。 使用下表找出失败的原因并采取适当的行动。
表:推送式通知错误代码状态码 | 基本状态信息 | 1000 | 成功 | 1001 | 失败的 | 1002 | 过期的 | 3001 | 不明原因的错误 | 3002 | 内部服务器错误 | 3003 | 没有appId领域的错误 | 3004 | 没有deviceToken领域的错误 | 3005 | 没有regID领域的错误 | 3006 | 没有requestID领域的错误 | 3007 | 至少错误消息或appData是必要的 | 3008 | 错误的注册regID | 3009 | 错误的注册appID | 3010 | 畸形的错误通知请求数据 | 3011 | 错误的致命问题映射的内容 | 3012 | 错误不足的领域 | 3013 | 误差不可能排队 | 3014 | 错误的通知取消不在队列或已经发送 | 3015 | 产生的I / O错误失败,中断I / O操作或未知原因 | 3016 | 误差不支持请求的URI | 3017 | 不支持请求的方法的误差 | 3018 | 错误的通知数据包含不可读数据或null | 3019 | 包含异常数据的误差 | 3020 | 不支持可靠性误差选项 | 3021 | 错误的坏填充例外 | 3022 | 错误的json解析例外 | 3023 | json映射的错误 | 3024 | 错误的非法blocksize | 3025 | 解码regID时发生错误 | 3026 | 错误的密钥 | 3027 | 不验证应用程序的错误 | 3028 | 不支持的编码类型的错误 | 3029 | unparseable请求类型的错误 | 3030 | 消息长度误差过度。 消息长度允许2 kb | 3031 | 不支持的connectionTerm误差 | 3032 | 不支持分块请求主体的错误 | 3033 | 非法截止日期的错误 | 3034 | 错误的非法推迟日期 | 3035 | 错误太长了春的消息数据 | 3036 | 错误的空多个请求 | 3037 | 错误的密钥生成通知 | 3038 | 创建应用程序的错误 | 3039 | 删除应用程序的错误 | 3040 | 读取应用程序的错误 | 3041 | 更新应用程序的错误 | 3042 | 错误的无效时间戳 | 3043 | 无效的错误类型 | 3044 | 不注册的应用程序的错误 | 3045 | 错误的应用程序的身份验证失败 | 3046 | 误差不允许使用推送服务器 |
本文为机器翻译:
原文:https://developer.tizen.org/development/tutorials/native-application/messaging/push-server |