个推的作用:可以为手机端的app使用者推送消息,而不是通过手机上的app对用户发送消息。所以用户是被动的接收信息。当然不只是只有对用户弹出窗口的这种方式,也可以把信息推送给app,让app决定对用户实行怎么样的操作,例如在app的栏目中显示出有新信息的图标,以便提高用户体验。
个推的官网http://www.igetui.com/
该api支持android和iso的推送。
下载个推的sdk,里面有各种不同文档,其中有android的apk的安装文件,可以进行推送的测试。
/**
* 推送的基类
* @author hj
*/
public abstract class PushBase {
protected static final String APPID = "b03c5cfef65ed30108f0a3fd82c3f6b4";
protected static final String APPKEY = "110000";
protected static final String MASTERSECRET = "a02a76119b20d4e31620d7597a3b4f35";
protected static final String CLIENTID = "f8b14fc288a21bc3d675190e9a4db0a4";
protected static final String API = "http://sdk.open.api.igexin.com/apiex.htm"; //OpenService接口地址
protected static String getDate(){
Date date = new Date();
return date.toLocaleString();
}
}
对多个app进行推送:
import java.util.ArrayList;
import java.util.List;
import com.gexin.rp.sdk.base.IIGtPush;
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;
public class PushMessageToAppTest extends PushBase{
public static void main(String[] args) {
// 推送主类
IIGtPush push = new IGtPush(API, APPKEY, MASTERSECRET);
try {
AppMessage message = new AppMessage();
//通知模版:支持TransmissionTemplate、LinkTemplate、NotificationTemplate,此处以LinkTemplate为例
//在通知栏显示一条含图标、标题等的通知,用户点击可打开您指定的网页
LinkTemplate template = new LinkTemplate();
template.setAppId(APPID); //应用APPID
template.setAppkey(APPKEY); //应用APPKEY
//通知属性设置:如通知的标题,内容
template.setTitle("填写通知标题"); // 通知标题
template.setText("填写通知内容"); // 通知内容
template.setLogo("hello.png");
// template.setIsRing(true); // 收到通知是否响铃,可选,默认响铃
// template.setIsVibrate(true); // 收到通知是否震动,可选,默认振动
// template.setIsClearable(true); // 通知是否可清除,可选,默认可清除
template.setUrl("http://baidu.com"); //点击通知后打开的网页地址,你可以设定你希望跳转的网页地址如http://www.igetui.com
message.setData(template);
// message.setOffline(true); //用户当前不在线时,是否离线存储,可选,默认不存储
// message.setOfflineExpireTime(72 * 3600 * 1000); //离线有效时间,单位为毫秒,可选
List appIdList = new ArrayList();
appIdList.add(APPID);
List phoneTypeList = new ArrayList();//通知接收者的手机操作系统类型,可选
phoneTypeList.add("ANDROID");
List provinceList = new ArrayList(); //通知接收者所在省份,可选
provinceList.add("浙江");
provinceList.add("上海");
provinceList.add("北京");
List tagList = new ArrayList(); //通知接收者的标签用户,可选
tagList.add("填写tags名称");
message.setAppIdList(appIdList);
message.setPhoneTypeList(phoneTypeList);
message.setProvinceList(null);
message.setTagList(null);
IPushResult ret = push.pushMessageToApp(message);
System.out.println(ret.getResponse().toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
对单个app的多个用户进行推送:
import java.util.ArrayList;
import java.util.List;
import com.gexin.rp.sdk.base.IIGtPush;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.ListMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.NotificationTemplate;
//可接收多个用户,最多为50个
public class PushMessageToListTest extends PushBase{
public static void main(String[] args) {
//显示每个用户的用户状态,false:不显示,true:显示
System.setProperty("gexin.rp.sdk.pushlist.needDetails", "true");
// 推送主类
IIGtPush push = new IGtPush(API, APPKEY, MASTERSECRET);
try {
ListMessage message = new ListMessage();
//通知模版:支持TransmissionTemplate、LinkTemplate、NotificationTemplate,此处以NotificationTemplate为例
//在通知栏显示一条含图标、标题等的通知,用户点击后激活您的应用
NotificationTemplate template = new NotificationTemplate();
template.setAppId(APPID); //应用APPID
template.setAppkey(APPKEY); //应用APPKEY
//通知属性设置:如通知的标题,内容
template.setTitle("此处填写通知标题"+getDate()); // 通知标题
template.setText("此处填写通知内容"+getDate()); // 通知内容
template.setLogo("push.png"); // 通知图标,需要客户端开发时嵌入
template.setIsRing(false); // 收到通知是否响铃,可选,默认响铃
// template.setIsVibrate(true); // 收到通知是否震动,可选,默认振动
template.setIsClearable(true); // 通知是否可清除,可选,默认可清除
template.setTransmissionType(2); // 收到消息是否立即启动应用,1为立即启动,2则广播等待客户端自启动
template.setTransmissionContent("你需要透传的内容"+getDate()); // 透传内容(点击通知后SDK将透传内容传给你的客户端,需要客户端做相应开发)
message.setData(template);
// message.setOffline(true); //用户当前不在线时,是否离线存储,可选,默认不存储
// message.setOfflineExpireTime(72 * 3600 * 1000); //离线有效时间,单位为毫秒,可选
// 接收者
List targets = new ArrayList();
Target target1 = new Target();
// Target target2 = new Target(); //如果需要可设置多个接收者
target1.setAppId(APPID); //接收者安装的应用的APPID
target1.setClientId(CLIENTID); //接收者的ClientID
//如需,可设置多个接收者
// target2.setAppId(APPID2); //接收者2安装应用的APPID
// target2.setClientId(CLIENTID2); //接收者2的ClientID
targets.add(target1);
// targets.add(target2);
//推送前通过该接口申请“ContentID”
String contentId = push.getContentId(message);
IPushResult ret = push.pushMessageToList(contentId, targets);
System.out.println(ret.getResponse().toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
对单个app的单个用户进行推送:
import com.gexin.rp.sdk.base.IIGtPush;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.TransmissionTemplate;
//对单个用户推送
public class PushMessageToSingleTest extends PushBase{
public static void main(String[] args) {
// 推送主类
IIGtPush push = new IGtPush(API, APPKEY, MASTERSECRET);
try {
//单推消息类型
SingleMessage message = new SingleMessage();
//通知模版:支持TransmissionTemplate、LinkTemplate、NotificationTemplate,此处以TransmissionTemplate为例
//数据经SDK传给您的客户端,由您写代码决定如何处理展现给用户
TransmissionTemplate template = new TransmissionTemplate();//透传方式
template.setAppId(APPID);
template.setAppkey(APPKEY);
template.setTransmissionContent("您需要透传的内容:"+getDate());
//收到消息是否立即启动应用,1为立即启动,2则广播等待客户端自启动
template.setTransmissionType(1);
message.setData(template);
// message.setOffline(true); //用户当前不在线时,是否离线存储,可选
// message.setOfflineExpireTime(72 * 3600 * 1000); //离线有效时间,单位为毫秒,可选
Target target1 = new Target();
target1.setAppId(APPID);
target1.setClientId(CLIENTID);
//单推
IPushResult ret = push.pushMessageToSingle(message, target1);
System.out.println(ret.getResponse().toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
import com.gexin.rp.sdk.base.IIGtPush;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.NotyPopLoadTemplate;
public class PushMessageToSingleTest1 extends PushBase{
public static void main(String[] args) {
// 推送主类
IIGtPush push = new IGtPush(API, APPKEY, MASTERSECRET);
try {
// 单推消息类型
SingleMessage message = new SingleMessage();
//通知栏弹框下载模版
//在通知栏显示一条含图标、标题等的通知,用户点击后弹出框,用户可以选择直接下载应用或者取消下载应用。
NotyPopLoadTemplate template = new NotyPopLoadTemplate();
// 是否激活
template.setActived(true);
// 安卓标识
template.setAndroidMark("android_mark");
template.setAppId(APPID);
template.setAppkey(APPKEY);
// 是否自动安装
template.setAutoInstall(true);
// 是否响铃
template.setBelled(true);
// 通知是否可清除
template.setCleared(true);
// 苹果标识
template.setIphoneMark("iphone_mark");
// 下载图标
template.setLoadIcon("");
// 下载标题
template.setLoadTitle("LoadTitle");
// 下载地址
template.setLoadUrl("http://dizhensubao.igexin.com/dl/com.ceic.apk");
// 通知栏内容
template.setNotyContent("NotyContent");
// 通知栏图标
template.setNotyIcon("");
// 通知栏标题
template.setNotyTitle("NotyTitle");
// 左侧按钮名称
template.setPopButton1("下载");
// 右侧按钮名称
template.setPopButton2("取消");
// 弹框内容
template.setPopContent("popContent");
// 弹框图标
template.setPopImage("");
// 弹框标题
template.setPopTitle("PopTitle");
// 塞班标识
template.setSymbianMark("symbian_mark");
// 是否震动
template.setVibrationed(true);
message.setData(template);
message.setOffline(true);
message.setOfflineExpireTime(72 * 3600 * 1000);
// 设置优先级
message.setPriority(1);
Target target1 = new Target();
target1.setAppId(APPID);
target1.setClientId(CLIENTID);
// 单推
IPushResult ret = push.pushMessageToSingle(message, target1);
System.out.println(ret.getResponse().toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}