阅读:18902回复:0
APP消息推送-个推的简单应用介绍
个推提供JAVA、C#、PHP、Python等多种语言版本的服务端API SDK,可以和各种第三方应用服务器技术架构进行对接。为了最大程度提高消息推送性能,第三方开发者需要根据业务需求合理选择消息推送形式。如果是针对每个用户进行定制化的消息推送、或是实现类似IM的点对点消息,请采用单推消息形式(SingleMessage);如果需要根据特定条件筛选出一批CID 后推送相同的内容,请选择批量推送形式(ListMessage);如果希望针对省市或全量用户进行推送,请选择群推形式(AppMessage)。
二、使用步骤 1、快速入门 使用个推需要先在个推官网申请APP账号信息,生成对应的使用SDK发送消息需要的AppID,AppKey,MasterSecret,将APP的AppID,AppKey,MasterSecret替换到源码示例中,具体步骤请参考API文档------快速入门。 2、推送模板 个推提供了5种不同的推送模板:1. 点击通知打开应用模板;2. 点击通知打开网页模板;3. 点击通知弹框下载模板;4. 透传消息模版;5. 消息撤回模版。推送模板定义了消息展示的不同方式,适用的不同消息场景。例如需要在APP通知栏展示应用图片,则需要使用第1种模板。需要根据APP通知栏展示的推送消息,自定义跳转到对应的功能界面则需要使用第4种模板。要根据具体的业务场景来选择不同的推送模板。具体示例及模板场景介绍请参考API文档------推送模板。 3、消息推送方式 个推提供了11种消息推送方式:1. 对单个用户推送消息;2. 对指定列表用户推送消息;3. 对指定应用群推消息;4. Wi-Fi推送;5. 定速推送;6. 定时任务推送;7. 任务组名推送;8. 应用群推条件交并补功能;9. 批量单推功能;10. 短信补量推送接口;11. 对消息内容覆盖功能。不同的消息推送方式适用于不同的业务场景及不同的用户群体。例如对单个用户进行推送则需要使用第1种推送方式。对整个APP的所有用户进行推送,则需要使用第3种推送方式。每种推送方式都有具体的使用场景,需要根据具体业务进行选择不同的推送方式。具体示例及消息推送方式介绍请参考API文档------消息推送方式。 4、其它接口 API文档------其它接口介绍了别名、标签等推送方式,可根据具体的业务场景进行选择。 三、推送示例 以app推送接口为例来发送消息: import com.gexin.rp.sdk.base.IPushResult;import com.gexin.rp.sdk.base.impl.AppMessage;import com.gexin.rp.sdk.http.IGtPush;import com.gexin.rp.sdk.template.LinkTemplate; import java.io.IOException;import java.util.ArrayList;import java.util.List; public class AppPush { //定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置 private static String appId = ""; private static String appKey = ""; private static String masterSecret = ""; private static String url = "http://sdk.open.api.igexin.com/apiex.htm"; public static void main(String[] args) throws IOException { IGtPush push = new IGtPush(url, appKey, masterSecret); // 定义"点击链接打开通知模板",并设置标题、内容、链接 LinkTemplate template = new LinkTemplate(); template.setAppId(appId); template.setAppkey(appKey); template.setTitle("请填写通知标题"); template.setText("请填写通知内容"); template.setUrl("http://getui.com"); List<String> appIds = new ArrayList<String>(); appIds.add(appId); // 定义"AppMessage"类型消息对象,设置消息内容模板、发送的目标App列表、是否支持离线发送、以及离线消息有效期(单位毫秒) AppMessage message = new AppMessage(); message.setData(template); message.setAppIdList(appIds); message.setOffline(true); message.setOfflineExpireTime(1000 * 600); IPushResult ret = push.pushMessageToApp(message); System.out.println(ret.getResponse().toString()); } } 四、推送结果 图片:00000000000.png 图片:111111.png 五、注意事项 在不同的推送模板中,使用不同的模板及样式,对于推送的消息长度有限制。 使用不同的消息推送形式具有不同的调用限制次数。 pushMessageApp(message)一分钟不能超过5次,一天不能超过100次; pushtosingle单推接口没有限制; pushtolist批量推送接口一天能调200万次,一次建议50个cid上传一次;pushtoapp一分钟内连续调用不能超过5次,一天调用不能超过100次。 六、常见问题 1. 服务端接口推送返回 appid_error Appid_error表示推送指定的appid和clientid绑定的appid不一致。 原因应该您修改过应用appid,导致clientid绑定在之前的appid上,你需要的操作:删除sd卡libs目录,应用清除数据或者卸载重装,再启动应用重新获取clientid。 2. 服务端接口推送返回 tokenMD5noUser clientID输入错误,或者是个无效的clientID(clientID无效,意味着用户3个月未登陆)。 3. 服务端接口推送返回 appidNoUser 客户端还未集成sdk,或者集成后未获取到clientID,导致服务端任务该appid下没有用户。 查看服务端是否写错APPID。 查看客户端配置文件中配置的APPID和服务端配置的是否一致。 4. 服务端接口推送返回 DuplicatedContentId 第三方服务端推送消息,个推服务端接收到消息,但是发送的回执第三方服务端没有收到而超时导致服务端SDK再次发送,个推服务端会再次接收到,但不会再次下发的,会返回错误信息给第三方服务端。 5. 服务端接口推送返回 sign_error 请确认编码是否是UTF-8,不是则修改为UTF-8。 检测APPID,APPKEY,MASTERSECRET相关的值,尤其MASTERSECRET不要与APPSECRET搞混。 服务端出口ip是否有多个,若无法固定出口ip,可使用restAPI。 6. 服务端调用API接口返回值是成功的,但客户端没有接收到 如{taskId=OSS-052X_VuS4***M5KgDQ4, result=ok, status=successed_online},这样的返回值中,result=ok,是说明已经成功提交到个推服务端。 status=successed_online,status有三种状态:online,offline,ignore,分别是在线下发,离线下发,无效用户三种状态。 先确认客户端和服务端配置的APPID等参数信息是否一致,一致的话把clientid提供给技术支持人员,让他们协助排查。 如果推送的透传消息,在客户端是没有任何提示的,透传消息个推SDK接收到后直接广播给客户端,不做任何处理,需要客户端自己去处理。确认客户端是否有对透传消息进行处理。 推送给iOS应用的消息,如果是online状态,则是用个推通道推送的透传消息,如果是offline状态则是用APN通道推送的,会有通知栏消息提示的,消息接收不及时有可能是APN延迟导致的。 7. 其他常见服务端问题 (1)novalidpush的问题 有两种可能性 第一:推送的列表里有无效的clietnid,会返回这个错误,但是正常的clientid 还是会正常发送 第二:服务端推送的appid和clientid对应的appid不一致也会返回novalidpush (2)taskgrouperror 报这个错,主要是任务组名太长,或者格式不对。 有效taskGroupName为:字母(大小写都可)、数字、下划线、汉字。 taskGroupName的utf8最大字节为40。 (3)api推送返回成功了,为什么api上看不到推送记录 API推送,如果是tosingle接口推送的,平台上是不记录的,只有tolist(推送的clientID大于等于2个)和toapp接口推送的才会记录。并且这个接口推送的记录不实时统计的,隔天将在平台上看到统计数据。 (4)推送接口中离线和离线时间的设置有什么作用 针对Android用户,设置了离线和离线时间,当推送任务下发后,检测到要推送的用户处于离线状态,会先将该消息存在离线库里,当用户在设置的离线时间内在线,离线消息将会下发。 针对iOS的离线用户,会直接向苹果APNs发起请求。 个推官方常见问题总结 http://docs.getui.com/question/getui/other/ 附件包含:客户端SDK包,服务端集成jar包,源码示例,使用说明,API使用文档 |
|
|