前几天刚写完的一个东西,写的比较简单,没有使用其他插件,原生php+计划任务实现

极光推送的代码

/*
$receiver="registration_id" : [ "4312kjklfds2", "8914afd2", "45fdsa31" ];
$receiver="tag" : [ "深圳", "广州", "北京" ]
$receiver= "tag" : [ "深圳", "广州" ]
$receiver= "tag_and" : [ "女", "会员"]
//自定义类型推送类型 $m_type = 'http';//推送附加字段的类型
$m_txt = 'http://www.groex.cn/';//推送附加字段的类型对应的内容(可不填) 可能是url,可能是一段文字。
$m_time = '86400';//离线保留时间
*
* { "platform" : "all" }
*
* { "platform" : ["android", "ios"] }
* 测试成不成功记得看管理平台上面的统计信息,因为之前把apns_production参数设置成了生产环境,调用接口成功,可是却没有用户,后来改为了开发环境,就成功了。
*/ function jiguang_send($receive, $content, $platform, $m_type, $m_txt, $m_time) { $appkey = ''; //AppKey
$secret = ''; //Secret $postUrl = "https://api.jpush.cn/v3/push"; $base64 = base64_encode("$appkey:$secret");
$header = array("Authorization:Basic $base64", "Content-Type:application/json");
$data = array();
$data['platform'] = $platform; //目标用户终端手机的平台类型android,ios,winphone
$data['audience'] = $receive; //目标用户 $data['notification'] = array(
//统一的模式--标准模式
"alert" => $content,
//安卓自定义
"android" => array(
"alert" => $content,
"title" => "",
"builder_id" => 1,
"extras" => array("type" => $m_type, "txt" => $m_txt)
),
//ios的自定义
"ios" => array(
"alert" => $content,
"badge" => "1",
"sound" => "default",
"extras" => array("type" => $m_type, "txt" => $m_txt)
)
); //苹果自定义---为了弹出值方便调测
$data['message'] = array(
"msg_content" => $content,
"extras" => array("type" => $m_type, "txt" => $m_txt)
); //附加选项
$data['options'] = array(
"sendno" => time(),
"time_to_live" => $m_time, //保存离线时间的秒数默认为一天
"apns_production" => false, //布尔类型 指定 APNS 通知发送环境:0开发环境,1生产环境。或者传递false和true
);
$param = json_encode($data);
// $postUrl = $this->url;
$curlPost = $param; $ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, $postUrl); //抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0); //设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // 增加 HTTP Header(头)里的字段
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 终止从服务端进行验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$return_data = curl_exec($ch); //运行curl
curl_close($ch); return $return_data;
} 因为后面发现极光推送可以自定义分类推送消息,其他我也没看明白,我自己就根据用户的性别,坐标,gps返回的城市自己去查询极光返回的id
去推送,结果发现对于app开发和php后台开发来说都容易的多 app开发只需要对接基本的sdk就可以了 消息系统设计,这里混合了极光推送的任务表 主表
CREATE TABLE `v1_jiguang_user_data` (
`jg_id` int(10) NOT NULL AUTO_INCREMENT,
`jiguang_id` varchar(200) CHARACTER SET utf8 NOT NULL,
`user_id` int(10) NOT NULL,
`app_type` varchar(200) CHARACTER SET utf8 NOT NULL,
`is_sent` int(2) NOT NULL DEFAULT '' COMMENT '判定是都接受app推送,默认1是推送 2是不推送',
`time` int(11) NOT NULL COMMENT '登录时间',
`user_sex` int(2) DEFAULT NULL COMMENT '性别 1为男 0为女',
`longitude` varchar(30) CHARACTER SET utf8 DEFAULT NULL COMMENT '经度',
`latitude` varchar(30) CHARACTER SET utf8 DEFAULT NULL COMMENT '纬度',
`region_tag` varchar(40) CHARACTER SET utf8 DEFAULT NULL COMMENT '地区tag',
PRIMARY KEY (`jg_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


从表

CREATE TABLE `v1_push_message_history` (
`push_message_history_id` int(10) NOT NULL AUTO_INCREMENT,
`user_id` int(10) NOT NULL COMMENT '操作用户',
`content` text CHARACTER SET utf8 COMMENT '推送内容',
`receiver` text CHARACTER SET utf8 COMMENT 'receiver消息标识',
`platform` text CHARACTER SET utf8 COMMENT '推送平台',
`msg_type` int(10) DEFAULT '1' COMMENT '消息类型 1 系统消息 2活动消息 3还款提醒 ',
`time` int(11) DEFAULT NULL COMMENT '发布时间',
PRIMARY KEY (`push_message_history_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


任务表

CREATE TABLE `v1_message_task` (
`task_id` int(10) NOT NULL AUTO_INCREMENT,
`task_type` varchar(100) CHARACTER SET utf8 NOT NULL COMMENT '任务类型',
`message_content` varchar(400) CHARACTER SET utf8 NOT NULL COMMENT '信息内容',
`user_id` int(10) NOT NULL COMMENT '信贷员ID',
`time` int(11) NOT NULL COMMENT '执行时间',
PRIMARY KEY (`task_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

然后在crontab里面执行就可以了,查询的时候只需要根据v1_jiguang_user_data的男,女,地区来查询,推送给执行用户,不然就全部发送,直接把

$receiver="registration_id" : [ "4312kjklfds2", "8914afd2", "45fdsa31" ];这样发送就Ok了
 

php实现简单消息发送+极光推送系统的更多相关文章

  1. .net平台借助第三方推送服务在推送Android消息(极光推送)

    最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS ...

  2. .net平台借助第三方推送服务在推送Android,IOS消息(极光推送_V3版本)最新

    最近刚从极光推送官网上看到V2版本要停用,不得不有重新写V3版本的.这里用到了 HTTP Basic Authentication http://www.cnblogs.com/pingming/p/ ...

  3. Ionic5整合极光推送JPush ( 简单 )

    项目初始化 1. 安装项目依赖: # 安装cordova插件 ionic cordova plugin add jpush-phonegap-plugin --variable APP_KEY=&qu ...

  4. 【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

    作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- ...

  5. 极光推送使用实例(二) Android客户端

    上一篇简单介绍了极光推送在Java服务端的实现,如果感兴趣的可以看一下极光推送使用实例(一)JAVA服务端.这篇文章介绍下极光推送在Android客户端的实现. JPush Android SDK 是 ...

  6. phonegap 使用极光推送实现消息推送

    最近一直在研究各种推送,ios的由于是apns,比较容易实现,但是andriod的就比较麻烦.后来看了很多解决方案,gcm明显是不行的,其他的方案更是一头雾水,而且需要做第二次开发,太麻烦,后来就选择 ...

  7. Qt通过极光推送向app推送消息

    简介 最近在做个项目,当客服端收到防盗的消息通知时向手机app推送一个消息,告知有防盗报警.这么小的功能没必要自己写个推送端,极光推送免费而且推送的成功率高,已经能满足我们的需求了. 极光推送的文档大 ...

  8. Java整合极光推送 ( 简单 )

    Java 整合极光推送官方文档:https://github.com/jpush/jpush-api-java-client 这里记录一下简单的使用步骤:创建一个普通的 Maven 工程然后添加依赖 ...

  9. 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言

    在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...

随机推荐

  1. OpenCV学习代码记录——人脸检测

    很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...

  2. 大型互联网架构概述 关于架构的架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE

    大型互联网架构概述 目录 架构目标 典型实现 DNS CDN LB WEB APP SOA MQ CACHE STORAGE 本文旨在简单介绍大型互联网的架构和核心组件实现原理. 理论上讲,从安装配置 ...

  3. SSD卡对redis的影响

    原文地址:http://antirez.com/news/52 Hello! As promised today I did some SSD testing. The setup: a Linux ...

  4. C#:网络传输问题

    1.Http Post Header 中文数据值,服务端接收Header 中文数据值乱码问题: 客户端:    Encoding utf8Encoding = Encoding.GetEncoding ...

  5. 多分类-- ROC曲线

    本文主要介绍一下多分类下的ROC曲线绘制和AUC计算,并以鸢尾花数据为例,简单用python进行一下说明.如果对ROC和AUC二分类下的概念不是很了解,可以先参考下这篇文章:http://blog.c ...

  6. Sql2008中添加程序集(转)

    一.示例演示 1.用C# 建立数据库 CRL 项目 public partial class MyClr{    [Microsoft.SqlServer.Server.SqlFunction]    ...

  7. GDB用法简要整理

    [时间:2017-05] [状态:Open] [关键词:gdb,调试,debug,用户手册] 使用gdb是需要在编译是指定-g命令,在可执行文件中添加符号信息. 1. 启动和退出 可以使用gdb gd ...

  8. iOS应用开发,全局强制竖屏,部分页面允许旋转的处理

    目前大多数app都不支持横屏模式,用户不常用,开发起来也麻烦一些.但有些时候,又离不开横屏和竖屏的切换,比如查看视频.图片.文档等,这时又不得不对页面做横屏的处理.下面来教大家如何处理这种场景,方法可 ...

  9. Spring MVC学习摘要

    1. context:component-scan标签的use-default-filters属性的作用以及原理分析 http://www.cnblogs.com/hafiz/p/5875770.ht ...

  10. SOLID原则 【转】

    S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则(Programming Priciple)的首字母缩写. 面向对象设计的原则 SRP  The Single ...