灯笼芯 发表于 2016-3-4 16:52:28

Tizen推送 - 服务器:发送推送通知

本教程演示了如何从应用程序服务器发送推送通知的应用程序。热身熟悉的API通过学习基本知识:
[*]发送推送通知从应用程序服务器发送推送通知应用程序。
[*]处理错误代码使用错误代码来识别和处理故障。
发送推送通知使用Tizen推动api,您可以到您的应用程序安装在Tizen设备发送通知。 发送推送通知的基础上的 推教程。 这个用例涵盖了更高级的信息,比如在一个请求中发送多个通知和发送广播通知。发送推送通知:
[*]确定RQM服务器。请求管理器(RQM)服务器之前收集你的推送通知发送给应用程序。 RQM服务器必须首先选择基于2位数的注册ID。表:RQM服务器
前缀的regId地区URL
00US Easthttps://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
50US Easthttps://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

例如,如果应用程序的注册ID,您想要发送一个通知从04年开始,服务器必须RQM的URLhttps://apnortheast.push.samsungosp.com:8090 /小型/ pn / api /推动 。
[*]创建通知消息。消息是一个字段,构成一个通知。 消息字段包含不仅消息显示在设备上的快速面板,而且设备必须采取的行为时接收通知。 消息字段是一个字符串,该字符串包含键值对。 可用的选项在下表中给出。表:消息字段键-值对
关键价值描述
action/行动警报ALERT:存储消息并提醒用户。沉默SILENT:存储消息没有提醒用户。丢弃DISCARD:丢弃消息。发射LAUNCH:强行启动应用程序并提供通知。行动,如果应用程序没有运行。 如果没有行动的定义,默认行为 沉默。
alertMessage最高可达127个字节报警信息显示给用户的快速面板。 如果未设置操作 警报 ,这个值是没有意义的。
badgeOption增加INCREASE:徽章数量增加给定的值。减少DECREASE:给定值的徽章数量减少。SET :徽章数量设置为给定的值。
选择更新图标徽章数量。 如果设置了行动 丢弃 , badgeOption将被忽略。 如果不包括徽章选项,图标徽章数量保持不变。
badgeNumber0 - 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描述额外的信息
编码encoding编码定义了如何 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格式的,但无效的数据,没有请求处理和被认为是一个错误。响应消息只显示收到通知请求是否成功。 响应消息不处理是否推动服务接收通知。 响应消息的顺序是一样的请求消息的顺序。

[*]下面的示例显示了一个响应消息请求成功时:{   "results":   [{      "regID": "ab123456",      "requestID": "0000001",      "statusCode": 1000,      "statusMsg": "Success"   }
[*]下面的示例显示了一个响应消息请求失败时由于畸形:{   "results":   [{      "regID": "",      "requestID": "",      "statusCode": 3023,      "statusMsg": "error of json mapping exception"   }
[*]下面的示例显示了一个响应消息请求失败时由于异常数据:{   "results":   [{      "regID": "ab123456",      "requestID": "0000001",      "statusCode": 3008,      "statusMsg": "error of not registered regID"   }
请注意
在上面的例子中,3008错误代码意味着regID推动服务器不存在。 当您的应用程序的特定regID被用户卸载或禁用,因此regID必须从您的应用程序服务器。 当应用程序重新安装或启用,它必须重复 注册过程并发送一个新的regID到您的应用服务器上。

[*]多个请求您可以构建一个多个请求在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   ]}}
[*]示例响应:

[*]下面的示例显示了一个响应消息请求成功时:{   "results":   [{      "regID": "ab123456",      "requestID": "0000001",      "statusCode": 1000,      "statusMsg": "Success"   }   {      "regID": "ab234567",      "requestID": "0000002",      "statusCode": 1000,      "statusMsg": "Success"   }
[*]下面的示例显示了一个响应消息请求失败时由于畸形:{   "results":   [{      "regID": "",      "requestID": "",      "statusCode": 3023,      "statusMsg": "error of json mapping exception"   }
[*]下面的示例显示了一个响应消息当某些地方的多个请求没有和其他人没有:{   "results":   [{      "regID": "ab123456",      "requestID": "0000001",      "statusCode": 1000,      "statusMsg": "Success"   }   {      "regID": "ab234567",      "requestID": "0000002",      "statusCode": 3008,      "statusMsg": "error of not registered regID"+   }

[*]多播您可以构建一个多播将推送通知发送到多个应用程序。 目前,这个功能不支持注册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   ]}}
[*]示例响应:

[*]下面的示例显示了一个响应消息请求成功时:{   "results":   [{      "regID": "ab123456",      "requestID": "0000001",      "statusCode": 1000,      "statusMsg": "Success"   }   {      "regID": "ab234567",      "requestID": "0000002",      "statusCode": 1000,      "statusMsg": "Success"   }   {      "regID": "ab345678",      "requestID": "0000002",      "statusCode": 1000,      "statusMsg": "Success"   }
[*]下面的示例显示了一个响应消息请求失败时由于畸形:{   "results":   [{      "regID": "",      "requestID": "",      "statusCode": 3023,      "statusMsg": "error of json mapping exception"   }
[*]下面的示例显示了一个响应消息时的某些部分多播请求没有和其他人没有:{   "results":   [{      "regID": "ab123456",      "requestID": "0000001",      "statusCode": 1000,      "statusMsg": "Success"   }   {      "regID": "ab234567",      "requestID": "0000001",      "statusCode": 3008,      "statusMsg": "error of not registered regID"   }   {      "regID": "ab345678",      "requestID": "0000001",      "statusCode": 3013,      "statusMsg": "error of impossible to enqueue"   }

处理错误代码如果发送推送通知请求失败由于某种原因,响应消息包含一个错误代码。 使用下表找出失败的原因并采取适当的行动。
表:推送式通知错误代码
状态码基本状态信息
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解析例外
3023json映射的错误
3024错误的非法blocksize
3025解码regID时发生错误
3026错误的密钥
3027不验证应用程序的错误
3028不支持的编码类型的错误
3029unparseable请求类型的错误
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
页: [1]
查看完整版本: Tizen推送 - 服务器:发送推送通知