项目ITP(三) 玩玩 服务端 到 app端

前言


  系列文章:[传送门]

  泡泡脚,写写博客,规律生活,睡个好觉,待会看会书。

正文


  上面讲了二维码生成,及 手机端扫一扫,大家有兴趣去看看。

  今天我们讲一下,百度云推送平台。

  每天想着问题,问题只会慢慢的清晰。想着想着,慢慢模式就出来了。

模式

          

                    推送交互模式

  ①② 所指的是学生群体

  ③  所指的是教师

  ③ :教师可以基于http 给服务器指示,提示服务器进行操作(push...等);或是直接在web端进行操作

  ① :学生群体接受 push,或是直接查看某些通知,或是直接查看富文本,或是然后点击进行(③步骤)

  ② : 学生基于http 从服务器拉去资料

  ##ps:大家有好的点子 留言

百度云推送平台


  百度云推送服务的相关信息,主要包括两部分:

    1. 快速开发使用 Push 服务。

    2. 更多 Push 服务的开发及使用功能。

Android端


  1. 注册百度账号,并成为百度开发者;

  2. 创建应用,获取 API Key 及 Secret Key,请参考查看应用密钥;

  3. 下载应用示例;

  4. 把示例(Android 项目)导入 Eclipse 工程;

  5. 运行示例应用;

  6. 登录管理控制台发送通知;

  7. 手机端接收通知。

详细资料: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 手机端

总结

  算个工具类吧 没别的。看书咯,加油大家

感谢及资源共享

    

    

    路上走来一步一个脚印,希望大家和我一起。

    感谢读者!很喜欢你们给我的支持。如果支持,点个赞。

    知识来源: 百度云平台

时间: 2024-12-27 23:24:04

项目ITP(三) 玩玩 服务端 到 app端的相关文章

判断客户端是微信端和app端

有时我们会碰到这样一种情况,就是app和微信端用的是同一个项目,而有些部分在微信端需要隐藏而app不用,这样就只需要判断一下客户端是微信的情况了,代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>判断微信端</title> </head> <body> <div id="content"

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近.  很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实现签到 这次 我们实现 javaweb http json 交互 in action 题目很长,但我想让你们看下,给我点意见. 开始吧 实战 本次以经典的登录作为案例.登录做的好也是经典. 服务端 和 app端,服务端简略,app端详细介绍... 服务端 资料: <spring> @Respons

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

前言 系列文章:[传送门] 洗了个澡,准备写篇博客.然后看书了.时间 3 7 分.我慢慢规律生活,向目标靠近.  很喜欢珍惜时间像叮当猫一样 正文 慢慢地,二维码实现签到将要落幕了.下篇文章出二维码实现签到 这次 我们实现 javaweb http json 交互 in action 题目很长,但我想让你们看下,给我点意见. 开始吧 实战 本次以经典的登录作为案例.登录做的好也是经典. 服务端 和 app端,服务端简略,app端详细介绍... 服务端 资料: <spring> @Respons

Jenkins中maven的作用--构建项目(三)

本文主要根据Jenkins上的日志来继续说明构建项目的过程,上文我们已经讲到构建一个测试环境或单独终端的过程,详情可以了解上篇文章 一.背景介绍 首先看下SVN代码的仓库的结构: 代码仓库里有一个文件夹,可以随便取名,文件夹中可以放置很多单独的项目,每个项目下有branch,trunk,demand三个文件.在branch下面可以有pc端,微信端, APP端,后台等终端,从下面的结构中,可以看出每个终端的代码中有资源文件夹src(类的定义,配置文件,说明文档,jar包等)和pom文件. 二.构建

微服务学习三:springboot与springcloud集成之Eurake的使用(server端,client端)

这个多亏了网站上的一个大神的博客: http://blog.csdn.net/forezp/article/details/70148833 强烈推荐学习: 1.springcloud是什么,这个大家百度吧,我一会也说不明白,但是比dubbo更强大,包含了dubbo的内容,也包含了比dubbo更多的内容. 2.什么是Eurake?关于这个我觉得如果大家知道zookeeper就明白了Eurake的优势. springcloud集成了Eurake,所以对于服务的治理注册更方便简洁了,而且不需要安装,

DIOCP开源项目-高效稳定的服务端解决方案(DIOCP + 无锁队列 + ZeroMQ + QWorkers) 出炉了

[概述] 自从上次发布了[DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端]文章后,得到了很多朋友的支持和肯定.这加大了我的开发动力,经过几个晚上的熬夜,终于在昨天晚上,DEMO基本成型,今天再加入了QWorkers来做逻辑处理进程,进一步使得逻辑处理进程更加方便和高效.今天特意写篇blog来记录我的心得与大家分享. [功能实现说明] 沿用上次的草图 目前DEMO图上的功能都已经实现.下面谈谈各部分的实现. 通信服务, 由DIOCP实现,担当与客户端的通信工作

项目中客户端,服务端验证,数据库联合唯一约束,事务管理。

项目中有个需求,发布一个活动,记录下参加该活动的id和参与人id,同时调用接口,往收藏夹中添加一条记录,往交易表中添加一条记录.最后根据返回的结果,给出不同的提示信息. 1.如果当前的在jsp页面上面做处理,判断是否参与过.参加过之后,参加按钮不可点.没有参加的情况,参加按钮可以点. 2.jsp客户端加上js处理,参加按钮点击完之后,按钮不可点. 3.在controller中,业务逻辑开始前,再次java判断是否参加过该活动. 4.在数据库中参与表(活动id,参与人id)加上联合唯一约束.根据异

优化页面访问速度(三) ——服务端优化

优化页面访问速度(三) ——服务端优化 一.概述 服务端的优化,主要可以通过消息队列.减少数据库请求(缓存).并发处理.页面静态化等方式处理. 二.消息队列 1.解决问题 消息队列(Message Queue,MQ)有许多不同的实现方式,可以用rabbitmq.activemq.rocketmq,也可以用任务分发系统gearman. 消息队列主要是解决消息的异步发送,即对于某个系统不需要关心的内容,只需要发布一个处理完毕的消息,带上一些参数,有需要的系统自行订阅.例如一些任务执行完成的回调函数,

微服务介绍及Asp.net Core实战项目系列之微服务介绍

0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.微服务选型 在做微服务架构的技术选型的时候,以"无侵入"和"社区活跃"为主要的考量点,将来升级为原子服务架构.量子服务架构的时候.甚至恢复成单体架构的时候,代价最小. 软件开发只需要组装,不再需要从头开发. 选型可以参考一下张队长的文章:https://mp.weixin.qq.com/s/UIFjm7W6bDfdmjpeMVJtqA 二.微服务架构是什么? 每一个微服务都是一个零件,并使用这