1. 程式人生 > >HBuilder+個推伺服器實現推送(二)

HBuilder+個推伺服器實現推送(二)

package TestDemo.test;


import com.gexin.fastjson.JSONObject;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.AppMessage;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.base.payload.APNPayload;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.LinkTemplate;
import com.gexin.rp.sdk.template.NotificationTemplate;
import com.gexin.rp.sdk.template.TransmissionTemplate;
import com.gexin.rp.sdk.template.style.Style0;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class PushSingle {

    //定義常量, appId、appKey、masterSecret 採用本文件 "第二步 獲取訪問憑證 "中獲得的應用配置
    private static String appId = "個推上獲取appid";
    private static String appKey = "個推上獲取appkey";
    private static String masterSecret = "個推上獲取masterSecret";
    private static String pushText="{title:'通知標題',content:'通知內容',payload:'通知去幹嘛這裡可以自定義'}";
    public static String cid = "這是客戶端ID,單個使用者傳送;
   
    //向個推伺服器傳送請求
    public static void push(String cid) throws IOException{
    	IGtPush push = new IGtPush(appKey, masterSecret);
        push.connect();
        
        SingleMessage message = new SingleMessage();
        message.setOffline(true);
        // 離線有效時間,單位為毫秒,可選
        message.setOfflineExpireTime(24 * 3600 * 1000);
        //推送內容,格式為{title:'通知標題',content:'通知內容',payload:'通知去幹嘛這裡可以自定義'}
        message.setData(getTemplate());
        // 可選,1為wifi,0為不限制網路環境。根據手機處於的網路情況,決定是否下發
        message.setPushNetWorkType(0); 
        
       
        Target target = new Target();
        target.setAppId(appId);
        target.setClientId(cid);
        
        IPushResult ret = push.pushMessageToSingle(message,target);
        System.out.println(ret.getResponse().toString());
    }
    //生成推送訊息
    public static TransmissionTemplate getTemplate() {
	    TransmissionTemplate template = new TransmissionTemplate();
	    template.setAppId(appId);
	    template.setAppkey(appKey);
	    template.setTransmissionContent(pushText);
	    template.setTransmissionType(2);
	    APNPayload payload = new APNPayload();
	    //payload.setBadge(0);
	    payload.setContentAvailable(1);
	    payload.setSound("default");
	    payload.setCategory("$由客戶端定義");
	    String content=pushText.substring(pushText.indexOf(",content:'")+",content:'".length(),pushText.indexOf("',payload:"));
	    //簡單模式APNPayload.SimpleMsg 
	    payload.setAlertMsg(new APNPayload.SimpleAlertMsg(content));
	    template.setAPNInfo(payload);
	    return template;
	}
    
}
以上的程式碼是適合IOS/Android單個使用者傳送,如果想所用使用者或者一部分使用者傳送請檢視SDK中的例子實現。