找回密码
 立即注册
查看: 3547|回复: 0

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

[复制链接]
发表于 2016-3-4 16:52:28 | 显示全部楼层 |阅读模式
本教程演示了如何从应用程序服务器发送推送通知的应用程序。
热身
熟悉的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

    例如,如果应用程序的注册ID,您想要发送一个通知从04年开始,服务器必须RQM的URLhttps://apnortheast.push.samsungosp.com:8090 /小型/ pn / api /推动 。
  • 创建通知消息。
    消息是一个字段,构成一个通知。 消息字段包含不仅消息显示在设备上的快速面板,而且设备必须采取的行为时接收通知。 消息字段是一个字符串,该字符串包含键值对。 可用的选项在下表中给出。
    表:消息字段键-值对
    关键价值描述
    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描述额外的信息
        编码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解析例外
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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|泰泽应用|泰泽论坛|泰泽网|小黑屋|Archiver|手机版|泰泽邮箱|泰泽网 ( 蜀ICP备13024062号-1 )

GMT+8, 2024-4-26 03:08 , Processed in 0.083595 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表