项目ITP(三) 玩玩 服务端 到 app端
前言
系列文章:[传送门]
泡泡脚,写写博客,规律生活,睡个好觉,待会看会书。
正文
上面讲了二维码生成,及 手机端扫一扫,大家有兴趣去看看。
今天我们讲一下,百度云推送平台。
每天想着问题,问题只会慢慢的清晰。想着想着,慢慢模式就出来了。
模式

推送交互模式
①② 所指的是学生群体
③ 所指的是教师
③ :教师可以基于http 给服务器指示,提示服务器进行操作(push...等);或是直接在web端进行操作
① :学生群体接受 push,或是直接查看某些通知,或是直接查看富文本,或是然后点击进行(③步骤)
② : 学生基于http 从服务器拉去资料
##ps:大家有好的点子 留言
百度云推送平台
百度云推送服务的相关信息,主要包括两部分:
1. 快速开发使用 Push 服务。
2. 更多 Push 服务的开发及使用功能。
Android端
- 注册百度账号,并成为百度开发者;
- 创建应用,获取 API Key 及 Secret Key,请参考查看应用密钥;
- 下载应用示例;
- 把示例(Android 项目)导入 Eclipse 工程;
- 运行示例应用;
- 登录管理控制台发送通知;
- 手机端接收通知。
详细资料:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/guide
下面是效果图:


#API Key : 应用标识,服务端绑定和推送都要用到
#Secret Key : 应用私钥,服务端推送时用到
#APP ID: 这个id ,就是个id ,虽然也有唯一行,暂时没什么用
#channel ID: 推送通道id,通常对应一台终端。同样的一个app ,装在手机A 和手机B上,channel id是不同的。
#user id : 应用的用户id,同一个用户,可以在不同的终端上拥有同一个app 。user id 和 channel id 配合使用
服务端
直接上代码吧
package sedion.jeffli.wmuitp.util.baidu; import com.baidu.yun.channel.auth.ChannelKeyPair;
import com.baidu.yun.channel.client.BaiduChannelClient;
import com.baidu.yun.channel.exception.ChannelClientException;
import com.baidu.yun.channel.exception.ChannelServerException;
import com.baidu.yun.channel.model.PushBroadcastMessageRequest;
import com.baidu.yun.channel.model.PushBroadcastMessageResponse;
import com.baidu.yun.channel.model.PushUnicastMessageRequest;
import com.baidu.yun.channel.model.PushUnicastMessageResponse;
import com.baidu.yun.core.log.YunLogEvent;
import com.baidu.yun.core.log.YunLogHandler; public class AndroidPushByBaiDuHelper
{
private static String apiKey = "xxx";
private static String secretKey = "xxx"; /**
* 初始化
* @return
*/
private static BaiduChannelClient initPushClient()
{
// 1. 设置developer平台的ApiKey/SecretKey
ChannelKeyPair pair = new ChannelKeyPair(apiKey, secretKey); // 2. 创建BaiduChannelClient对象实例
BaiduChannelClient channelClient = new BaiduChannelClient(pair); // 3. 若要了解交互细节,请注册YunLogHandler类
channelClient.setChannelLogHandler(new YunLogHandler()
{ @Override
public void onHandle(YunLogEvent event)
{
System.out.println(event.getMessage());
}
});
return channelClient;
} /**
* 推送广播消息(消息类型为透传,由开发方应用自己来解析消息内容) message_type = 0 (默认为0)
* @param Content 推送内容
*/
public static void pushBroadcastMessage(String Content)
{ BaiduChannelClient channelClient = initPushClient(); try
{ // 4. 创建请求类对象
PushBroadcastMessageRequest request = new PushBroadcastMessageRequest();
request.setDeviceType(3);
// device_type => 1: web 2: pc 3:android
// 4:ios 5:wp request.setMessage(Content); // 5. 调用pushMessage接口
PushBroadcastMessageResponse response = channelClient
.pushBroadcastMessage(request); // 6. 认证推送成功
System.out.println("push amount : " + response.getSuccessAmount()); }
catch (ChannelClientException e)
{
// 处理客户端错误异常
e.printStackTrace();
}
catch (ChannelServerException e)
{
// 处理服务端错误异常
System.out.println(String.format(
"request_id: %d, error_code: %d, error_message: %s",
e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
} } /**
* 推送单播消息(消息类型为透传,由开发方应用自己来解析消息内容) message_type = 0 (默认为0)
* @param ChannelId 手机端
* @param content 推送内容
* @param UserId 手机端
*/
public static void pushMessageSample(String content, long ChannelId,String UserId)
{ BaiduChannelClient channelClient = initPushClient(); try
{ //创建请求类对象
// 手机端的ChannelId, 手机端的UserId, 先用1111111111111代替,用户需替换为自己的
PushUnicastMessageRequest request = new PushUnicastMessageRequest();
request.setDeviceType(3); // device_type => 1: web 2: pc 3:android
// 4:ios 5:wp
request.setChannelId(ChannelId);
request.setUserId(UserId); request.setMessage(content); // 5. 调用pushMessage接口
PushUnicastMessageResponse response = channelClient
.pushUnicastMessage(request); // 6. 认证推送成功
System.out.println("push amount : " + response.getSuccessAmount()); }
catch (ChannelClientException e)
{
// 处理客户端错误异常
e.printStackTrace();
}
catch (ChannelServerException e)
{
// 处理服务端错误异常
System.out.println(String.format(
"request_id: %d, error_code: %d, error_message: %s",
e.getRequestId(), e.getErrorCode(), e.getErrorMsg()));
}
} }
#初始化
#推送广播消息(消息类型为透传,由开发方应用自己来解析消息内容) message_type = 0 (默认为0)
* @param Content 推送内容
# 推送单播消息(消息类型为透传,由开发方应用自己来解析消息内容) message_type = 0 (默认为0)
* @param ChannelId 手机端
* @param content 推送内容
* @param UserId 手机端
总结
算个工具类吧 没别的。看书咯,加油大家
感谢及资源共享


路上走来一步一个脚印,希望大家和我一起。
感谢读者!很喜欢你们给我的支持。如果支持,点个赞。
知识来源: 百度云平台
项目ITP(三) 玩玩 服务端 到 app端的更多相关文章
- 项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!
前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近. 很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实 ...
- Jenkins中maven的作用--构建项目(三)
本文主要根据Jenkins上的日志来继续说明构建项目的过程,上文我们已经讲到构建一个测试环境或单独终端的过程,详情可以了解上篇文章 一.背景介绍 首先看下SVN代码的仓库的结构: 代码仓库里有一个文件 ...
- 【饿了么】—— Vue2.0高仿饿了么核心模块&移动端Web App项目爬坑(三)
前言:接着上一篇项目总结,这一篇是学习过程记录的最后一篇,这里会梳理:评论组件.商家组件.优化.打包.相关资料链接.项目github地址:https://github.com/66Web/ljq_el ...
- PHP 服务端 和 APP 客户端 实现 RSA+AES 双向加密解密
目的:服务端和移动端双向加密解密 共有七个文件 其中包括三个类文件 lib_aes.php aes对称加密解密类 server_rsa_crypt.php 服务端RSA公钥私钥非对称加密解密类 cli ...
- 微服务学习三:springboot与springcloud集成之Eurake的使用(server端,client端)
这个多亏了网站上的一个大神的博客: http://blog.csdn.net/forezp/article/details/70148833 强烈推荐学习: 1.springcloud是什么,这个大家 ...
- WCF学习心得----(三)服务承载
WCF学习心得----(三)服务承载 这一章节花费了好长的时间才整理个大概,主要原因是初次接触这个东西,在做练习实践的过程中,遇到了很多的问题,有些问题到目前还没有得以解决.所以在这一章节中,有一个承 ...
- python 全栈开发,Day127(app端内容播放,web端的玩具,app通过websocket远程遥控玩具播放内容,玩具管理页面)
昨日内容回顾 1. 小爬爬 内容采集 XMLY 的 儿童频道 requests 2. 登陆 注册 自动登陆 退出 mui.post("请求地址",{数据},function(){} ...
- 微服务介绍及Asp.net Core实战项目系列之微服务介绍
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.微服务选型 在做微服务架构的技术选型的时候,我们以“无侵入”和“社区活跃”为主要的考量点,将来升级为原子服务架构.量子服务架构 ...
- app端内容播放,web端的玩具,app通过websocket远程遥控玩具播放内容,玩具管理页面
一.app端内容播放 下载代码 https://github.com/987334176/Intelligent_toy/archive/v1.0.zip 注意:由于涉及到版权问题,此附件没有图片和音 ...
随机推荐
- P3047 [USACO12FEB]附近的牛Nearby Cows
https://www.luogu.org/problemnew/show/P304 1 #include <bits/stdc++.h> 2 #define up(i,l,r) for( ...
- HTML5调用手机的Datepicker(日期选择器)
HTML5 拥有多个新的表单输入类型.这些新特性提供了更好的输入控制和验证,包含了如下新的输入类型: email url number range Date pickers (date, month, ...
- 解决在静态页面上使用动态参数,造成spider多次和重复抓取的问题
我们在使用百度统计中的SEO建议检查网站时,总是发现“静态页参数”一项被扣了18分,扣分原因是“在静态页面上使用动态参数,会造成spider多次和重复抓取”.一般来说静态页面上使用少量的动态参数的话并 ...
- spring学习(二)---依赖注入
spring第二个特性是依赖注入. 学习依赖注入,首先应该明白两个问题:1,谁依赖谁:2,谁注入,注入什么? 首先还是看代码: 还是这个bean: package testSpring.busines ...
- Hibernate框架:CRM练习--保存客户
crm:customer ralation manager 客户关系管理系统 一.准备 1.创建web项目 2.导包 最终为: 3.引入静态页面 将文件复制放入项目的WebContent目录下面: 4 ...
- 周报数据采集之生存图片(execl方法)
https://blog.csdn.net/Luzaofa/article/details/81675364 Python之Excel chart另存为图片大家好,好久没有更新博客了,这一段时间有点忙 ...
- 如何下载官网上下载历史Java版本(老版本Java)
首先先打开Oracle的官网 -->Oracle 然后选择Trials and Downloads 然后往下翻,选择java(JDK) 然后看到了这个,再往下翻 点他,然后就是选择你想下载 ...
- dva-counter
dva实例Counter. import dva, { connect } from 'dva'; import { Router, Route } from 'dva/router'; import ...
- Android手机app的adb命令测试电量
Android手机app电量测试 Android 5.0及以上的设备, 允许我们通过adb命令dump出电量使用统计信息 第一步:手机安装要测试的应用,打开手机开发者模式-USB模式,运行cmd.ex ...
- hdu 1052 Tian Ji -- The Horse Racing【田忌赛马】
题目 这道题主要是需要考虑到各种情况:先对马的速度进行排序,然后分情况考虑: 1.当田忌最慢的马比国王最慢的马快则赢一局 2.当田忌最快的马比国王最快的马快则赢一局 3.当田忌最快的马比国王最快的马慢 ...