<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/6/12 0012
 * Time: 16:38
 */
namespace app\modules\third\push;
use IGeTui;
use IGtSingleMessage;
use IGtTarget;
use IGtNotyPopLoadTemplate;
use IGtNotificationTemplate;
use IGtLinkTemplate;
use IGtTransmissionTemplate;
use IGtNotify;
use NotifyInfo_Type;
use IGtAPNPayload;
use DictionaryAlertMsg;
use IGtMultiMedia;
use MediaType;
class Unipush {
	const APPKEY = 'IJQIdoAYKcAvfGUzlQk3J8';
	const APPID = 'meohTEXXqk8kaO0r7x2UE3';
	const MASTERSECRET = 'tRulSFbEEf93Dzto0mzjv5';
	const CID = 'aafd265dc79ade488d71c19a08fec291';
	const HOST = 'http://sdk.open.api.igexin.com/apiex.htm';
	//单推接口案例
	public static function pushMessageToSingle() {
		$igt = new IGeTui(self::HOST, self::APPKEY, self::MASTERSECRET);

		//消息模版：
		// 4.NotyPopLoadTemplate：通知弹框下载功能模板
		$template = self::IGtTransmissionTemplateDemo();

		//定义"SingleMessage"
		$message = new IGtSingleMessage();

		$message->set_isOffline(true); //是否离线
		$message->set_offlineExpireTime(3600 * 12 * 1000); //离线时间
		$message->set_data($template); //设置推送消息类型
		$message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息，2为4G/3G/2G，1为wifi推送，0为不限制推送
		//接收方
		$target = new IGtTarget();
		$target->set_appId(self::APPID);
		$target->set_clientId(self::CID);
		//$target->set_alias(Alias);
		try {
			$rep = $igt->pushMessageToSingle($message, $target);
			var_dump($rep);
			echo ("<br><br>");

		} catch (RequestException $e) {
			$requstId = e . getRequestId();
			//失败时重发
			$rep = $igt->pushMessageToSingle($message, $target, $requstId);
			var_dump($rep);
			echo ("<br><br>");
		}
	}
	public static function IGtTransmissionTemplateDemo(){
    $template =  new IGtTransmissionTemplate();
    $template->set_appId(self::APPID);//应用appid
    $template->set_appkey(self::APPKEY);//应用appkey
    $template->set_transmissionType(1);//透传消息类型
    $template->set_transmissionContent("测试离线ddd");//透传内容
    //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
    //APN简单推送
//        $template = new IGtAPNTemplate();
//        $apn = new IGtAPNPayload();
//        $alertmsg=new SimpleAlertMsg();
//        $alertmsg->alertMsg="";
//        $apn->alertMsg=$alertmsg;
////        $apn->badge=2;
////        $apn->sound="";
//        $apn->add_customMsg("payload","payload");
//        $apn->contentAvailable=1;
//        $apn->category="ACTIONABLE";
//        $template->set_apnInfo($apn);
//        $message = new IGtSingleMessage();

    //第三方厂商推送透传消息带通知处理
    $notify = new IGtNotify();
    $notify -> set_payload("{}");
    $notify -> set_title("透传通知标题");
    $notify -> set_content("透传通知内容");
    $notify->set_type(NotifyInfo_Type::_payload);
    $template -> set3rdNotifyInfo($notify);

    //APN高级推送
    $apn = new IGtAPNPayload();
    $alertmsg=new DictionaryAlertMsg();
    $alertmsg->body="";
    $alertmsg->actionLocKey="";
    $alertmsg->locKey="";
    $alertmsg->locArgs=array("");
    $alertmsg->launchImage="";
//        IOS8.2 支持
    $alertmsg->title="";
    $alertmsg->titleLocKey="";
    $alertmsg->titleLocArgs=array("");

    $alertmsg->subtitle = "subtitle";

    $apn->alertMsg=$alertmsg;
    $apn->badge=7;
    $apn->sound="";
    $apn->add_customMsg("payload","");
    $apn->voicePlayType = 1;
    $apn->contentAvailable=1;
    $apn->category="ACTIONABLE";

    //IOS多媒体消息处理
    $media = new IGtMultiMedia();
    $media -> set_url("");
    $media -> set_onlywifi(false);
    $media -> set_type(MediaType::pic);

    $medias = array();
    $medias[] = $media;
    //$apn->set_multiMedias($medias);

    $template->set_apnInfo($apn);

    //PushApn老方式传参
//    $template = new IGtAPNTemplate();
//          $template->set_pushInfo("", 10, "", "com.gexin.ios.silence", "", "", "", "");

    return $template;
}
	public static function IGtNotificationTemplateDemo(){
    $template =  new IGtNotificationTemplate();
    $template->set_appId(self::APPID);//应用appid
    $template->set_appkey(self::APPKEY);//应用appkey
    $template->set_transmissionType(1);//透传消息类型
    $template->set_transmissionContent("测试离线");//透传内容
    $template->set_title("个推");//通知栏标题
    $template->set_text("个推最新版点击下载");//通知栏内容
    $template->set_logo("http://wwww.igetui.com/logo.png");//通知栏logo
    $template->set_isRing(true);//是否响铃
    $template->set_isVibrate(true);//是否震动
    $template->set_isClearable(true);//通知栏是否可清除
    //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
    return $template;
}
public static function IGtLinkTemplateDemo(){
    $template =  new IGtLinkTemplate();
    $template ->set_appId(self::APPID);//应用appid
    $template ->set_appkey(self::APPKEY);//应用appkey
    $template ->set_title("请输入通知标题xx");//通知栏标题
    $template ->set_text("请输入通知内容");//通知栏内容
    $template ->set_logo("");//通知栏logo
    $template ->set_isRing(true);//是否响铃
    $template ->set_isVibrate(true);//是否震动
    $template ->set_isClearable(true);//通知栏是否可清除
    $template ->set_url("http://www.igetui.com/");//打开连接地址
    //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
    return $template;
}
	public static function IGtNotyPopLoadTemplateDemo() {
		$template = new IGtNotyPopLoadTemplate();
		$template->set_appId(self::APPID); //应用appid
		$template->set_appkey(self::APPKEY); //应用appkey
		//通知栏
		$template->set_notyTitle("wwww"); //通知栏标题
		$template->set_notyContent("dddd"); //通知栏内容
		$template->set_notyIcon(""); //通知栏logo
		$template->set_isBelled(true); //是否响铃
		$template->set_isVibrationed(true); //是否震动
		$template->set_isCleared(true); //通知栏是否可清除
		//弹框
		$template->set_popTitle("弹框标题"); //弹框标题
		$template->set_popContent("弹框内容"); //弹框内容
		$template->set_popImage(""); //弹框图片
		$template->set_popButton1("下载"); //左键
		$template->set_popButton2("取消"); //右键
		//下载
		$template->set_loadIcon(""); //弹框图片
		$template->set_loadTitle("请填写下载标题");
		$template->set_loadUrl("请填写下载地址");
		$template->set_isAutoInstall(false);
		$template->set_isActived(true);

		//设置通知定时展示时间，结束时间与开始时间相差需大于6分钟，消息推送后，客户端将在指定时间差内展示消息（误差6分钟）
		/*$begin = "2019-09-02 15:26:22";
		$end = "2019-09-02 16:31:24";
		$template->set_duration($begin, $end);*/
		return $template;
	}

}