App实现友盟消息推送

实现消息推送方式

1、轮询,需要设置每隔一段时间向服务器发送请求,消耗大。不好很好把控时间,消息也不及时。

2、长链接,需要建立Socket链接,对服务器造成压力大。

3、使用第三方及时推送,开发成本小,第三方推送有友盟,个推,极光。。。。。。。

登录友盟官网

https://account.umeng.com

创建应用申请Appkey和App Master Secret

拾染博客

在开发者中心找到对应的服务端SDK

拾染博客

填写申请的申请Appkey和App Master Secret。

运行Ddemo.php(填写自己的手机设备号。ios或安卓开发人员)

下面为封装的方法(不是很好)

 /**
     * IOS推送—单播
     * @param $content array 弹框推送消息内容 array("title"=>消息标题,"body"=>消息内容) 不带标题直接推送为string
     * @param $silence array 静默或单播推送推送数据描述及其状态 自定义参数(ios用做数据处理)
     * @param $tokens  设备号
     * @param $from int 0单播推送 1静默推送
     * @param $num int 消息数量 静默推送为0(app显示的数量)
     * @return mixed
     */
    function sendIOSUnicast($content,$silence,$tokens,$from,$num) {
		try {
			$unicast = new \IOSUnicast();
			$unicast->setAppMasterSecret($this->appMasterSecret);
			$unicast->setPredefinedKeyValue("appkey",$this->appkey);
			$unicast->setPredefinedKeyValue("timestamp",$this->timestamp);
			// Set your device tokens here
			$unicast->setPredefinedKeyValue("device_tokens",$tokens);
			if($from ==0) {
                $unicast->setPredefinedKeyValue("alert", $content);//是否弹框显示 携带消息title标题 body内容 固定键名
                $unicast->setPredefinedKeyValue("sound", "chime");//是否带有声音提示手机
                $unicast->setCustomizedField("silence", $silence);//单播推送数据描述 自定义参数
            }
            if($num ==0){
                $unicast->setPredefinedKeyValue("badge", 0);
            }else{
                $unicast->setPredefinedKeyValue("badge", (int)$num);
            }
            if($from ==1){
                $unicast->setPredefinedKeyValue("content-available", 1);//静默content-available
                $unicast->setCustomizedField("silence", $silence);//静默推送数据描述 自定义参数
            }
			// Set 'production_mode' to 'true' if your app is under production mode
			$unicast->setPredefinedKeyValue("production_mode", "true");//上线后false 改为 true
			// Set customized fields
			$data = $unicast->send();
            return $data;
		} catch (Exception $e) {
			print("Caught exception: " . $e->getMessage());
		}
	}

特别注意的地方(生产环境和正式环境的区别)

$unicast->setPredefinedKeyValue("production_mode", "true");//上线后false 改为 true


拾染博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论