王强
侠客
侠客
  • UID49
  • 粉丝0
  • 关注0
  • 发帖数7
阅读:18902回复:0

APP消息推送-个推的简单应用介绍

楼主#
更多 发布于:2020-01-08 14:48
 个推提供JAVAC#PHPPython等多种语言版本的服务端API SDK,可以和各种第三方应用服务器技术架构进行对接。为了最大程度提高消息推送性能,第三方开发者需要根据业务需求合理选择消息推送形式。如果是针对每个用户进行定制化的消息推送、或是实现类似IM的点对点消息,请采用单推消息形式(SingleMessage);如果需要根据特定条件筛选出一批CID 后推送相同的内容,请选择批量推送形式(ListMessage);如果希望针对省市或全量用户进行推送,请选择群推形式(AppMessage)。

二、使用步骤
1、快速入门
使用个推需要先在个推官网申请APP账号信息,生成对应的使用SDK发送消息需要的AppID,AppKey,MasterSecret,将APPAppID,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



五、注意事项
在不同的推送模板中,使用不同的模板及样式,对于推送的消息长度有限制。
使用不同的消息推送形式具有不同的调用限制次数。
pushMessageAppmessage)一分钟不能超过5次,一天不能超过100次;
pushtosingle单推接口没有限制;
pushtolist批量推送接口一天能调200万次,一次建议50cid上传一次;pushtoapp一分钟内连续调用不能超过5次,一天调用不能超过100次。

六、常见问题


1. 服务端接口推送返回 appid_error
Appid_error表示推送指定的appidclientid绑定的appid不一致。
原因应该您修改过应用appid,导致clientid绑定在之前的appid上,你需要的操作:删除sdlibs目录,应用清除数据或者卸载重装,再启动应用重新获取clientid
2. 服务端接口推送返回 tokenMD5noUser
clientID输入错误,或者是个无效的clientIDclientID无效,意味着用户3个月未登陆)。
3. 服务端接口推送返回 appidNoUser
客户端还未集成sdk,或者集成后未获取到clientID,导致服务端任务该appid下没有用户。
查看服务端是否写错APPID
查看客户端配置文件中配置的APPID和服务端配置的是否一致。
4. 服务端接口推送返回 DuplicatedContentId
第三方服务端推送消息,个推服务端接收到消息,但是发送的回执第三方服务端没有收到而超时导致服务端SDK再次发送,个推服务端会再次接收到,但不会再次下发的,会返回错误信息给第三方服务端。
5. 服务端接口推送返回 sign_error
请确认编码是否是UTF-8,不是则修改为UTF-8
检测APPIDAPPKEYMASTERSECRET相关的值,尤其MASTERSECRET不要与APPSECRET搞混。
服务端出口ip是否有多个,若无法固定出口ip,可使用restAPI
6. 服务端调用API接口返回值是成功的,但客户端没有接收到
{taskId=OSS-052X_VuS4***M5KgDQ4, result=ok, status=successed_online},这样的返回值中,result=ok,是说明已经成功提交到个推服务端。
status=successed_onlinestatus有三种状态:onlineofflineignore,分别是在线下发,离线下发,无效用户三种状态。
先确认客户端和服务端配置的APPID等参数信息是否一致,一致的话把clientid提供给技术支持人员,让他们协助排查。
如果推送的透传消息,在客户端是没有任何提示的,透传消息个推SDK接收到后直接广播给客户端,不做任何处理,需要客户端自己去处理。确认客户端是否有对透传消息进行处理。
推送给iOS应用的消息,如果是online状态,则是用个推通道推送的透传消息,如果是offline状态则是用APN通道推送的,会有通知栏消息提示的,消息接收不及时有可能是APN延迟导致的。
7. 其他常见服务端问题
1novalidpush的问题
有两种可能性
第一:推送的列表里有无效的clietnid,会返回这个错误,但是正常的clientid 还是会正常发送
第二:服务端推送的appidclientid对应的appid不一致也会返回novalidpush
2taskgrouperror
报这个错,主要是任务组名太长,或者格式不对。
有效taskGroupName为:字母(大小写都可)、数字、下划线、汉字。
taskGroupNameutf8最大字节为40
3api推送返回成功了,为什么api上看不到推送记录
API推送,如果是tosingle接口推送的,平台上是不记录的,只有tolist(推送的clientID大于等于2个)和toapp接口推送的才会记录。并且这个接口推送的记录不实时统计的,隔天将在平台上看到统计数据。
4)推送接口中离线和离线时间的设置有什么作用
针对Android用户,设置了离线和离线时间,当推送任务下发后,检测到要推送的用户处于离线状态,会先将该消息存在离线库里,当用户在设置的离线时间内在线,离线消息将会下发。
针对iOS的离线用户,会直接向苹果APNs发起请求。

个推官方常见问题总结
http://docs.getui.com/question/getui/other/
附件包含:客户端SDK包,服务端集成jar包,源码示例,使用说明,API使用文档
附件名称/大小 下载次数 最后更新
个推使用手册(服务端).zip (4869KB)  0 2020-01-08 14:48
游客

返回顶部