根据以往的经验wwWmm202com页面word怎么删除空白页面,可能是mm202又换地方了

Q币寄售也称为“Q币提现”是指将Q币卡或带号Q币快速寄售,交易过程安全,收款方式灵活支持财付通、支付宝、银行卡或任意游戏点卡。
即时换卡也称为“即时点卡回收提现”是指将游戏点卡、一卡通充值卡通过即时换卡,快速寄售,1~5分钟内将换卡金额付款到用户指定的支付宝、财付通或银行卡。
网游收购主要为游戏玩家提供服务;收购已充值到账号或通行证内的点劵和金币,同时还提供部分游戏内虚拟货币及稀有道具的快速回收服务。
商户点卡寄售也称为“商户点卡回收”是指注册成为云奇付商户后可以获得最高的点卡回收费率折扣,为长期从事点卡回收的商家或个人提供利润最大点卡回收消耗服务系统。
API点卡消耗接口主要提供给具备支付功能的交易类型网站,通过点卡API支付接口可以快速整合具有特色的游戏点卡及一卡通充值卡支付购物功能的网站。
新闻资讯是云奇付为客户提供的资讯展示、企业公告、业务教程等收集整理相关图文内容的发布专栏。为用户提供最详细的在线内容查询栏目。
点劵交易(暂未开放)点劵交易是指腾讯游戏点卷自助交易平台,价格由市场需求决定,我司不在干预,让你的Q币卖到8折以上甚至9折,操作简单方便。
充值中心是指使用云奇付余额、支付宝、微信钱包付款购买网络游戏点数直充和通信费及三大运营商4G上网流量包在线充值,官方充值通道安全稳定平均到账时间30秒至10分钟内完成。
点卡兑换系统,全名《点卡即时寄售服务系统2.0》是为大家提供点卡兑换充值平台,充值各类网银,充值微小游戏平台软件付费等,无需开通网银,只需要买到支持的点卡即可完成充值,买错点卡,闲置点卡,活动所得等,都可以在本平台兑换提现,即时结账,无需等待,安全高效,解你燃眉之急
可选点卡种类
可选收款方式
点卡寄售系统
下载后可使用你的苹果手机24小时随时寄售兑换你的点卡!
扫描下载APP也可以在APP Store中搜索云奇付
点卡寄售系统
下载后可使用你的安卓手机24小时随时寄售兑换你的点卡!
扫描下载APP也可以在Androide 应用中搜索云奇付
本系统是专为商户开发的换卡系统专业版,支持批量提交卡密,详细的资金明细记录,分配独立的客户经理,协商可调的折扣,提现手续费全免,纸质合同制合作等多种方式,为你提供更方便的专业数字点卡兑换提现平台,适用于中小游戏运营商,第三方支付平台,大量闲置点卡,网络独立生意人,电商网站运营商等。
商户版优势
分配客户经理
专项的折扣价格
批量的提交方式
可签订纸质协议
T+0即时结算
支持点卡种类
Q币寄售服务是指将你QQ钱包里的Q币或者你合法拥有的点卡,平台充值等各类方式的Q币,通过我们寄售服务系统来完成寄售提现,支持30多家银行卡,财付通,支付宝,手机费,点卡,信易通余额等多种收款方式提现,我们打款时间是2分钟内,告别其他网站的挂单等待,繁琐的操作,T+N的结账方式,我们打款到银行卡的时间也是2分钟内,保证你收到资金为止,7X24小时无假日服务,随时满足你的需求,傻瓜式操作,支持1Q币起的小额交易,上万的单子也只需要30分钟左右,专业,高效,安全是我们追求的目标。
目前支持财付通,支付宝,易宝,信易通余额,点卡,游戏直冲,工行,建行,农行,中行,邮政,广发,深发,浦发等30多家银行卡
1.注册本站会员2.配置你的收款方式3.输入数量选择客服4.联系客服完成交易5.交易完成
价格温度计
独享收款链接系统是信易通网络独立创新研发的第四方支付系统,为网络独立的生意人,有一技之长或拥有独立资源的网络红人,合法出售自己的技术和资源,淘宝拍拍卖家,独立商人,微小软件开发者等任何人都可以在本系统申请开户,然后把属于你自己的独享收款链接,就是一个网址,发给任何人,不管谁付款,只要在你的独享链接付款,订单就会在你的账户生成,资金会即时到达你的账户,无需买家确认,你可以在订单资金到达几分钟后就可以进行提现操作,同样买家在付款的时候系统支持107家银行卡,20多种常见点卡,还可以用Q币,信易通余额,甚至网游游戏币来付款,大大增加了买家付款方式,解决了支付方式的瓶颈,大大提高了付款成功率,迎合了买家冲动消费,也为淘宝和拍拍卖家提供了另一种支付方式!!!
独享链接申请流程:
注册开户将链接发给买家买家评测资料买家完成付款资金到账完成交易
支持付款方式
好多网游玩家因为工作,情感,网络等各种原因,会放弃某个游戏,导致游戏内有价值的虚拟物品被遗弃在号里,得不到任何回报,我公司开设网游收购服务,玩家只需要联系我们客服,说明要出售的物品即可,我们支持30多家银行卡,财付通,支付宝,点卡,信易通余额等多种收款方式收款,打款时间是2分钟内,告别其他网站的挂单等待,繁琐的操作,T+N的结账方式, 7X24小时无假日服务,支持小额交易,专业,高效,安全是我们追求的目标!!!
联系在线客服客服报价开始交易API接口服交易完成
收购热门游戏
云奇付点卡API接口系统,是一种通过将程序、网站与云奇付平台对接的形式,来实现客户与商家用点卡直接充值、支付的第三方平台支持网络游戏点卡、一卡通充值卡、手机话费充值卡等,适用范围广、稳定性高、操作简单、全程提供技术支持。资金实时到账,无需等待,支持多家银行T+0提现,7X24小时服务,全年不间断服务客服在线服务。
使用流程:
API接口点卡类型
资质和荣誉
云奇付公告
服务项目动态
真假客服验证网址验证
可为你查询QQ号,旺旺号,企业QQ号,电话号码是否属于云奇付网络。
可为您验证是否为易信通网址或易信通官方合作网址。
热线电话:400-
深度合作机构
提示:行业相关网站权重>=4,友情链接互换请联系QQ:8684914
||||||||||||||||||||||||||||||||||||||著名经济学家,国务院发展研究中心研究员]
坚守七个底线,文明发言
国际知名经济学家,新制度经济学和现代产权经济学的创始人之一。】
&从股市本身的一些指标看,近期或将出现一波行情,如果说上半年的中国股市跌多涨少,下半年股市的情况会显著好转。
marieclaire
日系杂志《米娜》
白领女性快乐诉求
源自意大利的时尚
年轻的秘密:心态
清理黑头 给毛孔SPA
男性打扮的历史
&ONLY 自由不羁女郎
&美得窒息的海洋印象
酒后乱性可以征服她么
没有营养的腐败日记
过一个时尚情人节
&关于晚礼服的美丽遐想
&2012年白起来的VC篇(图)
有点复古又女人味十足的猫眼墨镜这两年一直很火, 而且不挑脸型,对圆脸也十分友好,跟复古的红唇造型尤其配……
真实赵云的人生结局,被演义里的饭桶将军打败抑郁而死 在赵云辉煌的一生中有一个挺没有面子的结局
一夜之间,从悬崖上流下来的小溪,停止了她潺潺湲湲的吟唱,变成了一悬崖凝固的诗。
谁说苏炳添跑出9.99秒只是偶然,谁说博尔特已经不是最好的!日,苏炳添和博尔特]
杨澜没有问夫妻生活的敏感问题,但确实问了:翁帆是否作出了牺牲?]> 消息推送 > 消息推送android文档 > API Doc
本文所描述的API接口均基于HTTP REST协议,若无特殊说明接口均使用UTF-8编码,消息体参数以及返回结果均采用JSON格式。
注意:使用API前需要在的App应用信息页面获取 Appkey 和 App Master Secret,同时在添加服务器IP地址做IP白名单安全验证或关闭IP白名单。如下图。
Appkey:应用唯一标识。友盟消息推送服务提供的appkey和友盟统计分析平台使用的同一套appkey。
App Master Secret:服务器秘钥,用于服务器端调用API请求时对发送内容做签名验证。
device_token: 友盟消息推送服务对设备的唯一标识。Android的device_token是44位字符串,iOS的device_token是64位。
alias: 开发者自有账号,开发者可以在SDK中调用setAlias(alias, alias_type)接口将alias+alias_type与device_token做绑定,之后开发者就可以根据自有业务逻辑筛选出alias进行消息推送。
单播(unicast): 向指定的设备发送消息。
列播(listcast): 向指定的一批设备发送消息。
广播(broadcast): 向安装该App的所有设备发送消息。
组播(groupcast): 向满足特定条件的设备集合发送消息,例如: "特定版本"、"特定地域"等。
文件播(filecast): 开发者将批量的device_token或者alias存放到文件,通过文件ID进行消息发送。
自定义播(customizedcast): 开发者通过自有的alias进行推送,可以针对单个或者一批alias进行推送,也可以将alias存放到文件进行发送。
通知-Android(notification): 消息送达到用户设备后,由友盟SDK接管处理并在通知栏上显示通知内容。
消息-Android(message): 消息送达到用户设备后,消息内容透传给应用自身进行解析处理。
通知-iOS: 和APNs定义一致。
静默推送-iOS: 和APNs定义一致。
测试模式: 在广播、组播等大规模发送消息的情况下,为了防止开发者误将测试消息大面积发给线上用户,特增加了测试模式。 测试模式下,只会将消息发送给测试设备。测试设备需要到网站上手工添加。
测试模式-Android: Android的测试设备是正式设备的一个子集
测试模式-iOS: iOS的测试模式对应APNs的开发环境(sandbox), 正式模式对应APNs的生产环境(prod),测试设备和正式设备完全隔离。
签名: 为了保证调用API的请求是合法者发送且参数没有被篡改,需要在调用API时对发送的所有内容进行签名。签名附加在调用地址后面,签名的计算方式参见。
推送类型: 单播(unicast)、列播(listcast)、自定义播(customizedcast且不带file_id)统称为单播类型消息,不会展示此类消息详细信息,仅展示前一天的汇总数据;广播(broadcast)、文件播(filecast)、组播(groupcast)、自定义播(customizedcast且file_id不为空)统称为任务类型消息,任务支持查询、撤销操作,会展示此类消息详细信息。
为了提供更加稳定高效的推送环境,生产环境下有以下发送限制: 
广播(broadcast)默认每天可推送10次
组播(groupcast)默认每分钟可推送5次
文件播(filecast)默认每小时可推送300次
自定义播(customizedcast, 且file_id不为空)默认每小时可推送300次
开发者通过此接口,可向 指定用户(单播)、 所有用户(广播) 或 满足特定条件的用户群(组播),发送 通知 或 消息。此外,该接口还支持开发者使用 自有的账号系统(alias) 来发送消息给指定的账号或者账号群。
注意,iOS推送的相关协议,请严格按照的协议来填写,友盟完全遵循APNs的协议。
http接口:
https接口:
签名(sign=mysign)的计算方式参见。
"appkey":"xx",
// 必填,应用唯一标识
"timestamp":"xx", // 必填,时间戳,10位或者13位均可,时间戳有效期为10分钟
"type":"xx",
// 必填,消息发送类型,其值可以为:
unicast-单播
listcast-列播,要求不超过500个device_token
filecast-文件播,多个device_token可通过文件形式批量发送
broadcast-广播
groupcast-组播,按照filter筛选用户群, 请参照filter参数
customizedcast,通过alias进行推送,包括以下两种case:
- alias: 对单个或者多个alias进行推送
- file_id: 将alias存放到文件后,根据file_id来推送
"device_tokens":"xx", // 当type=unicast时, 必填, 表示指定的单个设备
// 当type=listcast时, 必填, 要求不超过500个, 以英文逗号分隔
"alias_type": "xx", // 当type=customizedcast时, 必填
// alias的类型, alias_type可由开发者自定义, 开发者在SDK中
// 调用setAlias(alias, alias_type)时所设置的alias_type
"alias":"xx", // 当type=customizedcast时, 选填(此参数和file_id二选一)
// 开发者填写自己的alias, 要求不超过500个alias, 多个alias以英文逗号间隔
// 在SDK中调用setAlias(alias, alias_type)时所设置的alias
"file_id":"xx", // 当type=filecast时,必填,file内容为多条device_token,以回车符分割
// 当type=customizedcast时,选填(此参数和alias二选一)
file内容为多条alias,以回车符分隔。注意同一个文件内的alias所对应
的alias_type必须和接口参数alias_type一致。
// 使用文件播需要先调用文件上传接口获取file_id,参照"2.4文件上传接口"
"filter":{}, // 当type=groupcast时,必填,用户筛选条件,如用户标签、渠道等,参考附录G。
"payload": // 必填,JSON格式,具体消息内容(Android最大为1840B)
"display_type":"xx",
// 必填,消息类型: notification(通知)、message(消息)
"body": // 必填,消息体。
// 当display_type=message时,body的内容只需填写custom字段。
// 当display_type=notification时,body包含如下参数:
// 通知展现内容:
"ticker":"xx",
// 必填,通知栏提示文字
"title":"xx",
// 必填,通知标题
"text":"xx",
// 必填,通知文字描述
// 自定义通知图标:
"icon":"xx",
// 可选,状态栏图标ID,R.drawable.[smallIcon],
// 如果没有,默认使用应用图标。
// 图片要求为24*24dp的图标,或24*24px放在drawable-mdpi下。
// 注意四周各留1个dp的空白像素
"largeIcon":"xx",
// 可选,通知栏拉开后左侧图标ID,R.drawable.[largeIcon],
// 图片要求为64*64dp的图标,
// 可设计一张64*64px放在drawable-mdpi下,
// 注意图片四周留空,不至于显示太拥挤
"img": "xx",
// 可选,通知栏大图标的URL链接。该字段的优先级大于largeIcon。
// 该字段要求以http或者https开头。
// 自定义通知声音:
"sound": "xx",
// 可选,通知声音,R.raw.[sound]。
// 如果该字段为空,采用SDK默认的声音,即res/raw/下的
// umeng_push_notification_default_sound声音文件。如果
// SDK默认声音文件不存在,则使用系统默认Notification提示音。
// 自定义通知样式:
"builder_id": xx
// 可选,默认为0,用于标识该通知采用的样式。使用该参数时,
// 开发者必须在SDK里面实现自定义通知栏样式。
// 通知到达设备后的提醒方式,注意,"true/false"为字符串
"play_vibrate":"true/false", // 可选,收到通知是否震动,默认为"true"
"play_lights":"true/false",
// 可选,收到通知是否闪灯,默认为"true"
"play_sound":"true/false",
// 可选,收到通知是否发出声音,默认为"true"
// 点击"通知"的后续行为,默认为打开app。
"after_open": "xx" // 必填,值可以为:
"go_app": 打开应用
"go_url": 跳转到URL
"go_activity": 打开特定的activity
"go_custom": 用户自定义内容。
"url": "xx",
// 当after_open=go_url时,必填。
// 通知栏点击后跳转的URL,要求以http或者https开头
"activity":"xx",
// 当after_open=go_activity时,必填。
// 通知栏点击后打开的Activity
"custom":"xx"/{}
// 当display_type=message时, 必填
// 当display_type=notification且
// after_open=go_custom时,必填
// 用户自定义内容,可以为字符串或者JSON格式。
// 可选,JSON格式,用户自定义key-value。只对"通知"
// (display_type=notification)生效。
// 可以配合通知到达后,打开App/URL/Activity使用。
"key1": "value1",
"key2": "value2",
// 可选,发送策略
"start_time":"xx",
// 可选,定时发送时,若不填写表示立即发送。
// 定时发送时间不能小于当前时间
// 格式: "yyyy-MM-dd HH:mm:ss"。
// 注意,start_time只对任务生效。
"expire_time":"xx",
// 可选,消息过期时间,其值不可小于发送时间或者
// start_time(如果填写了的话),
// 如果不填写此参数,默认为3天后过期。格式同start_time
"max_send_num": xx
// 可选,发送限速,每秒发送的最大条数。最小值1000
// 开发者发送的消息如果有请求自己服务器的资源,可以考虑此参数。
"out_biz_no": "xx"
// 可选,开发者对消息的唯一标识,服务器会根据这个标识避免重复发送。
// 有些情况下(例如网络异常)开发者可能会重复调用API导致
// 消息多次下发到客户端。如果需要处理这种情况,可以考虑此参数。
// 注意, out_biz_no只对任务生效。
"production_mode":"true/false", // 可选,正式/测试模式。默认为true
// 测试模式只会将消息发给测试设备。测试设备需要到web上添加。
// Android: 测试设备属于正式设备的一个子集。
"description": "xx",
// 可选,发送消息描述,建议填写。
"mipush": "true/false",
// 可选,默认为false。当为true时,表示MIUI、EMUI、Flyme系统设备离线转为系统下发
"mi_activity": "xx",
// 可选,mipush值为true时生效,表示走系统通道时打开指定页面acitivity的完整包路径。
"appkey":"xx",
// 必填,应用唯一标识
"timestamp":"xx", // 必填,时间戳,10位或者13位均可,时间戳有效期为10分钟
"type":"xx",
// 必填,消息发送类型,其值可以为:
unicast-单播
listcast-列播,要求不超过500个device_token
filecast-文件播,多个device_token可通过文件形式批量发送
broadcast-广播
groupcast-组播,按照filter筛选用户群, 请参照filter参数
customizedcast,通过alias进行推送,包括以下两种case:
- alias: 对单个或者多个alias进行推送
- file_id: 将alias存放到文件后,根据file_id来推送
"device_tokens":"xx", // 当type=unicast时, 必填, 表示指定的单个设备
// 当type=listcast时, 必填, 要求不超过500个, 以英文逗号分隔
"alias_type": "xx", // 当type=customizedcast时, 必填
// alias的类型, alias_type可由开发者自定义, 开发者在SDK中
// 调用setAlias(alias, alias_type)时所设置的alias_type
"alias":"xx", // 当type=customizedcast时, 选填(此参数和file_id二选一)
// 开发者填写自己的alias, 要求不超过500个alias, 多个alias以英文逗号间隔
// 在SDK中调用setAlias(alias, alias_type)时所设置的alias
"file_id":"xx", // 当type=filecast时,必填,file内容为多条device_token,以回车符分割
// 当type=customizedcast时,选填(此参数和alias二选一)
file内容为多条alias,以回车符分隔。注意同一个文件内的alias所对应
的alias_type必须和接口参数alias_type一致。
// 使用文件播需要先调用文件上传接口获取file_id,参照"2.4文件上传接口"
"filter":{}, // 当type=groupcast时,必填,用户筛选条件,如用户标签、渠道等,参考附录G。
"payload":
// 必填,JSON格式,具体消息内容(iOS最大为2012B)
// 必填,严格按照APNs定义来填写
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"badge": xx,
"sound": "xx",
"content-available":1
// 可选,代表静默推送
"category": "xx",
// 可选,注意: ios8才支持该字段。
"key1":"value1",
// 可选,用户自定义内容, "d","p"为友盟保留字段,
// key不可以是"d","p"
"key2":"value2",
// 可选,发送策略
"start_time":"xx",
// 可选,定时发送时间,若不填写表示立即发送。
// 定时发送时间不能小于当前时间
// 格式: "yyyy-MM-dd HH:mm:ss"。
// 注意,start_time只对任务生效。
"expire_time":"xx",
// 可选,消息过期时间,其值不可小于发送时间或者
// start_time(如果填写了的话),
// 如果不填写此参数,默认为3天后过期。格式同start_time
"out_biz_no": "xx"
// 可选,开发者对消息的唯一标识,服务器会根据这个标识避免重复发送。
// 有些情况下(例如网络异常)开发者可能会重复调用API导致
// 消息多次下发到客户端。如果需要处理这种情况,可以考虑此参数。
// 注意,out_biz_no只对任务生效。
"apns_collapse_id": "xx" // 可选,多条带有相同apns_collapse_id的消息,iOS设备仅展示
// 最新的一条,字段长度不得超过64bytes
"production_mode":"true/false" // 可选,正式/测试模式。默认为true
// 测试模式只会将消息发给测试设备。测试设备需要到web上添加。
"description": "xx"
// 可选,发送消息描述,建议填写。
在正常情况下,返回结果的HTTP状态码为200,错误情况下返回的HTTP状态码为400。 返回结果采用JSON格式,包含的参数有:
"ret":"SUCCESS/FAIL", // 返回结果,"SUCCESS"或者"FAIL"
// 当"ret"为"SUCCESS"时,包含如下参数:
// 单播类消息(type为unicast、listcast、customizedcast且不带file_id)返回:
"msg_id":"xx"
// 任务类消息(type为broadcast、groupcast、filecast、customizedcast且file_id不为空)返回
"task_id":"xx"
// 当"ret"为"FAIL"时,包含如下参数:
"error_code":"xx" // 错误码,详见附录I
"error_msg":"xx"
// 错误信息
示例请参考。
错误码详见。
任务状态查询
任务类消息(type为broadcast、groupcast、filecast、customizedcast且file_id不为空),可以通过task_id来查询当前的消息状态。
注意,当次发送任务如果发送总量小于500个的话,后台会按照列播(listcast)的方式推送,不再按照任务的方式来处理,该接口会不生效。
POST 
http接口:
https接口:
签名(sign=mysign)的计算方式参见。
"appkey":"xx",
// 必填, 应用唯一标识
"timestamp":"xx",
// 必填, 时间戳,10位或者13位均可,时间戳有效期为10分钟
"task_id":"xx"
// 必填, 消息发送时, 从返回消息中获取的task_id
返回的JSON格式信息包括如下内容:
"ret":"SUCCESS/FAIL",
// 当"ret"为"SUCCESS"时,包含如下参数:
"task_id":"xx",
"status": xx,
// 消息状态: 0-排队中, 1-发送中,2-发送完成,3-发送失败,4-消息被撤销,
// 5-消息过期, 6-筛选结果为空,7-定时任务尚未开始处理
"sent_count":xx,
// 消息实际发送数
"open_count":xx,
"dismiss_count":xx // 忽略数
// 当"ret"为"FAIL"时,包含参数如下:
"error_code":"xx" // 错误码,详见附录I
"error_msg":"xx"
// 错误信息
Android: sent_count表示消息送达设备的数量。由于设备可能不在线,在消息有效时间内(expire_time),设备上线后还会收到消息。 所以"sent_count"的数字会一直增加,直至到达消息过期时间后,该值不再变化。
iOS: sent_count表示友盟成功推送到APNs平台的数字,不代表送达设备的个数。友盟将消息发送到APNs服务器之后,如果APNs没有返回错误,友盟认为发送成功。
Web端查看消息状态
除了通过API调用查询接口来查看任务的状态以及报表之外,更直观的方法是在Web后台来查看 所有任务 的报表数据,截图如下:
任务类消息(type为broadcast、groupcast、filecast、customizedcast且file_id不为空),可以撤销正在进行中的发送任务。
注意:撤销操作首先会从服务端尝试撤销;其次,针对组建版,android sdk 4.0及以上和iOS sdk 3.0及以上,会从设备端撤销已展示的消息。
POST 
http接口:
https接口:
签名(sign=mysign)的计算方式参见。
"appkey":"xx",
// 必填, 应用唯一标识
"timestamp":"xx",
// 必填, 时间戳,10位或者13位均可, 时间戳有效期为10分钟
"task_id":"xx"
// 必填, 消息发送时, 从返回消息中获取的task_id
返回的JSON格式信息包括如下内容:
"ret":"SUCCESS/FAIL",
// 当"ret"为"SUCCESS"时
"task_id":"xx"
// 当"ret"为"FAIL"时,包含参数如下:
"error_code":"xx" // 错误码,详见附录I
"error_msg":"xx"
// 错误信息
文件上传接口
文件上传接口支持两种应用场景:
a. 发送类型为"filecast"的时候, 开发者批量上传device_
b. 发送类型为"customizedcast"时, 开发者批量上传alias。
上传文件后获取file_id, 从而可以实现通过文件id来进行消息批量推送的目的。
文件自创建起,服务器会保存两个月。开发者可以在有效期内重复使用该file-id进行消息发送。
注意: 上传的文件不超过10M.
POST 
http接口:
https接口:
签名(sign=mysign)的计算方式参见。
"appkey":"xx",
// 必填, 应用唯一标识
"timestamp":"xx",
// 必填, 时间戳,10位或者13位均可, 时间戳有效期为10分钟
"content":"xx"
// 必填, 文件内容, 多个device_token/alias请用回车符"\n"分隔。
注意: content文件内容建议不要超过10M, 文件内容为开发者的device_token/alias,每行一个device_token/alias,由于换行符的特殊性,请将"\n"(或者"\r\n") 显示置于每个device_token/alias之后:
StringBuffer contentBuffer = new StringBuffer();
for (String alias: aliasList) {
contentBuffer.append(alias);
contentBuffer.append("\n"); // don't forget the return character
调用实例请参照
"ret":"SUCCESS/FAIL",
// 当"ret"为"SUCCESS"时
"file_id":"xx"
// 当"ret"为"FAIL"时,包含参数如下:
"error_code":"xx" // 错误码,详见附录I
"error_msg":"xx"
// 错误信息
1 如何添加IP白名单?
首先查看服务器的外网ip(可通过www.myip.cn查看),然后登录,在“应用信息”页面进行设置。网站后台截图如下:
2 为什么调用API返回HTTP 400错误?
我们对于格式错误或其他原因导致发送失败的消息返回400,在返回的内容里面会有error_code和error_msg表明发送失败的原因(参见附录I)。您需要在代码里面输出返回内容(java,php,python代码中显示返回内容可参考 ,其他语言的开发者可参考相关手册。)。如果在查看错误码后仍然需要帮助,可联系我们的客服人员。
3 后台显示消息发送成功,设备并没有收到消息?
4 消息推送接口的响应时间?调用推送API时超时应设置多久?
消息推送接口响应时间一般来说都不会超过2s,具体根据推送类型不同有一些差别,例如广播平均响应时间约ms,单播的响应时间约4.994ms。但是考虑到开发者的网络情况以及一些IO操作偶尔会耗时较长,我们推荐开发者将超时设置为 1分钟。
5 友盟消息推送API调用有什么频率或者次数的限制?
发送次数:对于没有上线的App(集成个数小于200),没有限制。 对于已经上线的App,广播次数每天不超过10次,其他类型则没有限制。如果业务场景确实需要发送超过10次广播,可发送邮件到申请开通增值服务,调大广播次数上限。
发送频率: 每分钟发送次数,对于单播目前没有限制。 对于任务(非单播),参考。
6 customized_cast中通过alias发送消息和通过file_id发送消息有什么区别?什么情况下使用file_id方式发送?
通过alias发送的消息使用单播方式发送,通过file_id发送的消息则需要在后台创建任务进行异步处理。通常来说,通过file_id方式发送消息到达设备的延时会比通过alias方式发送消息的延时大。所以我们建议alias个数小于500个时使用alias方式发送,超过500个使用file_id方式发送。
7 已经发送完成的消息是否可以撤销?
撤销操作首先会从服务端尝试撤销;其次,针对组建版,android sdk 4.0及以上和iOS sdk 3.0及以上,会从设备端撤销已展示的消息。
8 out_biz_no是什么?什么情况下需要填写?
out_biz_no是开发者的消息标识,和消息一一对应,如果两条消息的out_biz_no相同,推送服务器认为是同一条消息。所以,如果发送多个msg key相同的消息,后发送的消息服务器不会下发。
如果开发者在sdk中调用了mPushAgent.setMergeNotificaiton(false),服务端程序又在网络异常时进行了重试,就有可能造成同一条消息通过友盟服务器在用户手机上显示两次以上的情况。可以通过使用out_biz_no参数避免这种情况的发生。
9 如何添加测试设备?
请参照截图:
10 消息推送的技术支持渠道是什么?
如果阅读我们提供的在线帮助文档无法帮助您解决开发过程中遇到的具体问题,可发送邮件到,我们会在第一时间给予您回复。也可以在提问,我们有专人负责解答。
更多常见问题请点击访问:
注意: 附录A-F仅给出了调用发送接口最基本的参数,如需使用更多参数以支持更多的功能,请详细参照2.1.3
附录A unicast消息发送示例
// Android
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"unicast",
"device_tokens":"xx(Android为44位)",
"payload":
"display_type": "message",
// 消息,message
"custom":"自定义custom"/{} // message类型只需填写custom即可,可以是字符串或JSON。
"expire_time": " 12:00:00"
"description":"测试单播消息-Android"
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"unicast",
"device_tokens":"xx(iOS为64位)",
"payload":
// 苹果必填字段
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"k1":"v1",
// 自定义key-value, key不可以是"d","p"
"k2":"v2",
"expire_time":" 12:00:00"
"description":"测试单播消息-iOS"
返回结果示例:
// 返回成功
"ret":"SUCCESS",
"msg_id":"uu"
// 返回失败
"ret":"FAIL",
"error_code":"xxx" //错误码详见附录I。
"error_msg":"xxx" //错误提示消息。
附录B listcast消息发送示例
// Android
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"listcast",
"device_tokens":"device1,device2,…", // 不能超过500个,
//多个device_token用英文逗号分隔
"payload":
"display_type": "notification", // 通知,notification
"ticker":"测试提示文字",
"title":"测试标题",
"text":"测试文字描述",
"after_open":"go_app"
"expire_time": " 12:00:00"
"description":"测试列播通知-Android"
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"listcast",
"device_tokens":"device_token1,device_token2,...", // 不能超过500个,
//多个device_token用英文逗号分隔
"payload":
// 苹果必填字段
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"k1":"v1",
// 自定义key-value, key不可以是"d","p"
"k2":"v2",
"expire_time":" 12:00:00"
"description":"测试列播消息-iOS"
返回结果示例:
// 返回成功
"ret":"SUCCESS",
"msg_id":"ul"
// 返回失败
"ret":"FAIL",
"error_code":"xxx" //错误码详见附录I。
"error_msg":"xxx" //错误提示消息。
附录C broadcast消息发送示例
// Android
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"broadcast",
"payload":
"display_type": "notification", // 通知,notification
"ticker":"测试提示文字",
"title":"测试标题",
"text":"测试文字描述",
"after_open" : "go_app"
"start_time": " 12:00:00", //定时发送
"expire_time": " 12:00:00"
"description":"测试广播通知-Android"
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"broadcast",
"payload":
// 苹果必填字段
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"k1":"v1",
// 自定义key-value
"k2":"v2",
"start_time": " 12:00:00", //定时发送
"expire_time": " 12:00:00"
"description":"测试广播通知-iOS"
返回结果示例:
// 返回成功
"ret":"SUCCESS",
"task_id":"um"
// 返回失败
"ret":"FAIL",
"error_code":"xxx" //错误码详见附录I。
"error_msg":"xxx" //错误提示消息。
附录D groupcast消息发送示例
// Android
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"groupcast",
"and": [{"app_version": "1.0"}] // 发送给app_version为1.0的用户群
"payload":
"display_type": "notification", // 通知,notification
"ticker":"测试提示文字",
"title":"测试标题",
"text":"测试文字描述",
"after_open": "go_url",
"url": "http://message.umeng.com"
"expire_time": " 12:00:00"
"description":"测试组播通知-Android"
"appKey":"你的appkey",
"timestamp":"你的timestamp",
"type":"groupcast",
"and": [{"app_version": "1.0"}]
"payload":
// 苹果必填字段
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"k1":"v1",
// 自定义key-value
"k2":"v2",
"expire_time": " 12:00:00"
"description":"测试组播通知-iOS"
返回结果示例:
// 返回成功
"ret":"SUCCESS",
"task_id":"us"
// 返回失败
"ret":"FAIL",
"error_code":"xxx" //错误码详见附录I。
"error_msg":"xxx" //错误提示消息。
说明: 其中的filter条件表示向当前所有app_version是v1.0的应用客户端发送消息,其内容的使用语法示例请参考附录G。
附录E customizedcast消息发送示例
通过alias发送消息示例:
// Android
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"customizedcast",
"alias": "你的alias", //不能超过50个,多个alias以英文逗号风格
"alias_type":"alias对应的type(SDK调用addAlias(alias,alis_type)接口指定的alias_type)",
"payload":
"display_type": "notification", // 通知,notification
"ticker":"测试提示文字",
"title":"测试标题",
"text":"测试文字描述",
"after_open": "go_activity",
"activity": "xxx"
"expire_time": " 12:00:00"
"description":"测试alias通知-Android"
"appKey":"你的appkey",
"timestamp":"你的timestamp",
"type":"customizedcast",
"alias": "你的alias", //不能超过50个,多个alias以英文逗号分隔。
"alias_type":"alias对应的type",
"payload":
// 苹果必填字段
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"k1":"v1",
// 自定义key-value
"k2":"v2",
"expire_time": " 12:00:00"
"description":"测试alias通知-iOS"
返回结果示例:
// 返回成功
"ret":"SUCCESS",
"msg_id":"ul"
// 返回失败
"ret":"FAIL",
"error_code":"xxx" //错误码详见附录I。
"error_msg":"xxx" //错误提示消息。
通过file_id方式发送消息示例:
// 1. 先通过文件上传接口获取文件id:
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"content":"alias1\nalias2\nalias3\n..." // 多个alias用回车符分隔,回车符需要显示出现。
// 返回结果:
"ret":"SUCCESS",
"file_id":"PF495056"
// 2. 再通过文件方式发送消息:
// Android
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"customizedcast",
"alias_type":"alias对应的type",
"file_id": "PF9949", // 通过文件上传接口获得的file_id
"payload":
"display_type": "notification", // 通知,notification
"ticker":"测试提示文字",
"title":"测试标题",
"text":"测试文字描述",
"after_open":"go_custom",
"custom": {"key":"value",...}
"expire_time": " 12:00:00"
"description":"测试alias文件通知-Android"
"appKey":"你的appkey",
"timestamp":"你的timestamp",
"type":"customizedcast",
"alias_type":"alias对应的type(SDK添加的alias的时候,会带一个type)",
"file_id": "PF9949",
"payload":
// 苹果必填字段
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"k1":"v1",
// 自定义key-value
"k2":"v2",
"expire_time": " 12:00:00"
"description":"测试alias文件通知-iOS"
返回结果示例:
// 返回成功
"ret":"SUCCESS",
"task_id":"uc"
// 返回失败
"ret":"FAIL",
"error_code":"xxx" //错误码详见附录I。
"error_msg":"xxx" //错误提示消息。
附录F filecast消息发送示例
// 1. 先通过文件上传接口获取文件id:
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"content":"device_token_1\ndevice_token_2\ndevice_token_3\n..."
// 多个device_token用回车符分隔,回车符需要显示出现。
// 返回结果:
"ret":"SUCCESS",
"file_id":"PF9949"
// 2. 再通过文件方式发送消息:
// Android
"appkey":"你的appkey",
"timestamp":"你的timestamp",
"type":"filecast",
"file_id": "PF9949", // 通过文件上传接口获得的file_id
"payload":
"display_type": "notification", // 通知,notification
"ticker":"测试提示文字",
"title":"测试标题",
"text":"测试文字描述",
"after_open": "go_app"
"expire_time": " 12:00:00"
"description":"测试filecast文件通知-Android"
"appKey":"你的appkey",
"timestamp":"你的timestamp",
"type":"filecast",
"file_id": "PF9949",
"payload":
// 苹果必填字段
"alert":""/{ // 当content-available=1时(静默推送),可选; 否则必填。
// 可为JSON类型和字符串类型
"title":"title",
"subtitle":"subtitle",
"body":"body"
"k1":"v1",
// 自定义key-value
"k2":"v2",
"expire_time": " 12:00:00"
"description":"测试filecast文件通知-iOS"
返回结果示例:
// 返回成功
"ret":"SUCCESS",
"task_id":"uf"
// 返回失败
"ret":"FAIL",
"error_code":"xxx" //错误码详见附录I。
"error_msg":"xxx" //错误提示消息。
附录G 过滤条件示例
目前开放的筛选字段有:
"app_version"(应用版本)
"channel"(渠道)
"device_model"(设备型号)
"province"(省)
"tag"(用户标签)
"country"(国家和地区) //"country"和"province"的类型定义请参照 附录J
"language"(语言)
"launch_from"(一段时间内活跃)
"not_launch_from"(一段时间内不活跃)
我们的筛选条件非常灵活,支持逻辑上的and(与), or(或), not(非)操作, 以及这些操作的组合。具体请参照下面的示例。
注意: 筛选条件的最顶层必须是and。
由于筛选条件使用起来比较复杂,我们在网站的消息发送页面下也添加了对应的在线生成工具,供开发者在网站上筛选好条件之后直接生成对应的filter条件,如下图:
点击"生成Json串"之后,结果如下图("+"号部分没有显示,展开之后是对应Json串的格式化打印)
and条件示例
已注册的(registered_user) 并且 版本(app_version)是1.0的用户群,且这些用户在之后活跃过。
{"tag":"registered_user"}, // 开发者自定义tag
{"app_version":"1.0"}, // app-version
{"launch_from":""} // X天活跃/不活跃
or条件示例
自定义标签为“美剧”的用户 或者 自定义标签为“文艺”的用户
{"tag":"美剧"},
{"tag":"文艺"}
not条件示例
未注册的(registered_user)的用户群
"tag": "registered_user"
and, or, not组合条件示例
发送给分渠道 非 360 或者 "版本号为1.2" 并且 "之后不活跃"的用户
"channel": "360"
"app_version": "1.2"
"not_launch_from": ""
注意: Query expression的最顶层只能是 and 或者 or
大于等于(&=)及小于等于(&=)组合条件示例
如果要选择推送给版本&=某版本或者&=某版本的设备,以筛选&=1.0的设备为例,可采用以下两种方法实现:
方法一:自己筛选出符合要求的各个版本。(官方建议方案)格式为:
{"and":[{"or":[{"app_version":"&1.0"}]}]}
具体格式规范可以参考部分进行实现。
方法二:自己筛选出符合要求的各个版本。格式为:
{"and":[{"or":[{"app_version":"1.0"},{"app_version":"2.0"},{"app_version":"3.0"},{"app_version":"4.0"}]}]}
附录I 接口调用错误码
API通过HTTP Status Code来说明请求是否成功, 200表示成功, 400表示失败。
HTTP常见Status Code及其含义
BAD REQUEST
请求的地址不存在或者包含不支持的参数
UNAUTHORIZED
被禁止访问
请求的资源不存在
INTERNAL SERVER ERROR
API服务错误码
错误信息提示
Http Status Code
请求参数没有appkey或为空值
请求参数没有payload或为非法json
请求参数payload中, 没有body或为非法json
payload.display_type为message时, 请求参数payload.body中, 没有custom字段
请求参数payload中, 没有display_type或为空值
请求参数payload.body中, img格式有误, 需以http或https开始
payload.body.after_open为go_url时, 请求参数payload.body中, url格式有误, 需以http或https开始
payload.display_type为notification时, 请求参数payload.body中, 没有ticker参数
payload.display_type为notification时, 请求参数payload.body中, 没有title参数
payload.display_type为notification时, 请求参数payload.body中, 没有text参数
task_id对应任务没有找到
type为unicast或listcast时, 请求参数没有device_tokens或为空值
请求参数没有type或为空值
请求参数payload中, display_type值非法
应用组中尚未添加应用
payload.body.after_open为go_url时, 请求参数payload.body中, 没有url参数或为空
payload.body.after_open为go_activity时, 请求参数payload.body中, 没有activity或为空值
请求参数payload中, extra为非法json
请请求参数payload中, policy为非法json
task_id对应任务无法撤销
该应用已被禁用
请求参数policy中, start_time必须大于当前时间
请求参数policy中, expire_time必须大于start_time和当前时间
IP白名单尚未添加, 请到网站后台添加您的服务器IP或关闭IP白名单功能
Validation token不一致(PS: 此校验方法已废弃, 请采用sign进行校验)
未对请求进行签名
json解析错误
type为customizedcast时, 请求参数没有alias、file_id或皆为空值
type为groupcast时, 请求参数没有filter或为非法json
添加tag失败
type为filecast时, 请求参数没有file_id或为空值
type为filecast时, file_id对应的文件不存在
appkey不存在
payload长度过长
文件上传失败, 请稍后重试
请求参数没有aps或为非法json
签名不正确
时间戳已过期
请求参数没有content或为空值
filter格式不正确
未上传生产证书, 请到Web后台上传
未上传开发证书, 请到Web后台上传
证书已过期
定时任务发送时, 证书已过期
时间戳格式错误
请求参数policy中, 时间格式必须是yyyy-MM-dd HH:mm:ss
请求参数policy中, expire_time不能超过发送时间+7天
请求参数policy中, start_time不能超过当前时间+7天
type为customizedcast时, 请求参数没有alias_type或为空值
type值须为unicast、listcast、filecast、broadcast、groupcast、groupcast中的一种
type为customizedcast时, 请求参数alias、file_id只可二选一
发送频率超出限制
请求参数没有timestamp或为空值
请求参数没有task_id或为空值
IP不在白名单中, 请到网站后台添加您的服务器IP或关闭IP白名单功能
证书解析bundle id失败, 请重新上传
请求参数payload中p、d为友盟保留字段
certificate_revoked错误
certificate_unkown错误
handshake_failure错误
配置使用Token Auth, 但未上传p8证书
该app未开通服务端tag接口
内部错误(iOS证书)
内部错误(数据库)
内部错误(TFS)
附录J 国家和地区 & 省市 定义表
用于组播(groupcast)的时候,"国家和地区(country)"或者"省级(province)"的筛选维度:
国家和地区
印度尼西亚
更多国家和地区列表参见
附录K 关于签名
为了确保用户发送的请求不被更改,我们设计了签名算法。该算法基本可以保证请求是合法者发送且参数没有被修改,但无法保证不被偷窥。
签名生成规则:
A)提取请求方法method(POST,全大写);
B)提取请求url信息,包括Host字段的域名(或ip:端口)和URI的path部分。注意不包括path的querystring。
比如 或者 ;
C)提取请求的post-body;
D)拼接请求方法、url、post-body及应用的app_master_secret;
E)将D形成字符串计算MD5值,形成一个32位的十六进制(字母小写)字符串,即为本次请求sign(签名)的值;
Sign=MD5($http_method$url$post-body$app_master_secret);
python生成签名示例
import hashlib
def md5(s):
m = hashlib.md5(s)
return m.hexdigest()
appkey = '你的appkey'
app_master_secret = '你的app_master_secret'
timestamp = '你的timestamp'
method = 'POST'
url = 'http://msg.umeng.com/api/send'
params = {'appkey': appkey,
'timestamp': timestamp,
'device_tokens': device_token,
'type': 'unicast',
'payload': {'body': {'ticker': 'Hello World',
'title':'你好',
'text':'来自友盟推送',
'after_open': 'go_app'},
'display_type': 'notification'
post_body = json.dumps(params)
print post_body
sign = md5('%s%s%s%s' % (method,url,post_body,app_master_secret))
 温馨提示
为了保证使用友盟推送的开发者都能获得良好的用户体验,我们坚决杜绝滥用推送服务的事件发生。一经发现,友盟推送将有权对滥用服务的appkey实施封禁发送权限的处理
 技术支持
如果还有问题,请把您的问题发邮件至或者联系客服:(在线时间:工作日10:00~18:00),我们会尽快回复您。

我要回帖

更多关于 vue渲染页面空白 的文章

 

随机推荐