极光推送demo

android studio集成极光推送,获取附加字段详细,并提供自己写的一个demo,绝对不是官方demo 文章开始,先说明从这篇文章中能学到什么. 1,android studio如何加载极光推送的jar包和.so库文件. 2,如何获取附加字段里的键对应的值. 3,如何点击通知栏通知进入webView加载页面. 4,如何把推送过来的消息进行存储,并以listView显示,便于查看推送历史. 5,如何点击listView的item,进行网页跳转,再次进入webView加载页面. 6,如何为推 阅读详情

代码—-测试版

发送端

使用rest api
接口:https://api.jpush.cn/v3/push

public class JPushUtil {

    public JPushUtil() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {

        String re = sendPost( "hello","100100");// 消息                                                   // 则推送消息到app端
    }

    /**
     * platform 必填 推送平台设置
     * 
     * audience 必填 推送设备指定
     * 
     * notification 可选 通知内容体。是被推送到客户端的内容。与message 一起二者必须有其一,可以二者并存
     * 
     * message 可选 消息内容体。是被推送到客户端的内容。与 notification 一起二者必须有其一,可以二者并存
     * 
     * sms_message 可选 短信渠道补 向指定 URL 发送POST方法的请求
     * 
     * @param url
     *            发送请求的 URL
     * @param param
     *            请求参数,消息 和用户手机号码
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String news,String to) {
        String url="https://api.jpush.cn/v3/push";
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            //通知例子
            JSONObject json = new JSONObject("{'platform': 'all','audience' : 'all',"
                    + "'notification':{'android':{'alert' : '" + news+ "','extras':{'to':'1zhy'}}}, "
                    + "'message': {" + "'msg_content': 'news'}}");

            //通知例子
            //json = new JSONObject("{'platform': 'all','audience' : 'all','notification':{'alert' : '"+news+"'}}");
            //消息例子
            json = new JSONObject("{'platform': 'all','audience' : 'all','message':{'msg_content' : '"+news+"','content_type':'text','title':'"+to+"'}}");
            System.out.println(json.toString());
            String secret = "密匙 key";

            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Authorization", "Basic " + new sun.misc.BASE64Encoder().encode(secret.getBytes()));
            conn.setRequestProperty("Content-Type", "application/json");

            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            out.print(json.toString());
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应     
            in = new BufferedReader(new     InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            e.printStackTrace();
        }
        // 使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        return result;
    }

}
接收端

使用sdk,加入相关包

public class myJpushReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        Log.e(TAG, "onReceive - " + intent.getAction());
        if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
            Log.e(TAG, "JPush用户注册成功");
            String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
            Log.e(TAG, "[MyReceiver] 接收Registration Id : " + regId);
        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
            //Action - JPushInterface.ACTION_MESSAGE_RECEIVED
            // JPushInterface.EXTRA_TITLE
            //         保存服务器推送下来的消息的标题
            //JPushInterface.EXTRA_MESSAGE
            //        保存服务器推送下来的消息内容
            //JPushInterface.EXTRA_EXTRA
            //保存服务器推送下来的附加字段。这是个 JSON 字符串
            //JPushInterface.EXTRA_MSG_ID
            //SDK 1.6.1 以上版本支持。
            //唯一标识消息的 ID, 可用于上报统计等
            Log.e(TAG, "收到了自定义消息。消息内容是:" + bundle.getString(JPushInterface.EXTRA_MESSAGE));
            // 自定义消息不会展示在通知栏,完全要开发者写代码去处理
            // Push Talk messages are push down by custom message format
            processCustomMessage(context, bundle);


        } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
            //Action - JPushInterface.ACTION_NOTIFICATION_RECEIVED.
            //JPushInterface.EXTRA_NOTIFICATION_TITLE
            //保存服务器推送下来的通知的标题。
            //JPushInterface.EXTRA_ALERT
            //        保存服务器推送下来的通知内容JPushInterface.EXTRA_EXTRA
            // SDK 1.2.9 以上版本支持。
            //保存服务器推送下来的附加字段。这是个 JSON 字符串

            Log.d(TAG, "收到了通知");
            System.out.println("EXTRA_INBOX收到了通知" + bundle.getString(JPushInterface.EXTRA_INBOX));
            String ex = bundle.getString(JPushInterface.EXTRA_EXTRA);
            System.out.println("EXTRA_EXTRA收到了通知" + ex);
            if (ex != null && !ex.equals("{}")) {
                System.out.println("通知拦截 认证");
                try {
                    JSONObject json = new JSONObject(ex);
                    String to = json.optString("to");
                    if (to.equals("zhy")) {
                        System.out.println("通知拦截 认证 成功");
                    } else {
                        System.out.println("通知拦截 认证 失败");

                        //abortBroadcast();   //Receiver1接收到广播后中断广播

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            } else {
                System.out.println("通知不拦截");
            }

            // 在这里可以做些统计,或者做些其他工作
        } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
            //Action - JPushInterface.ACTION_NOTIFICATION_OPENED
            Log.d(TAG, "用户点击打开了通知");
            System.out.println("用户点击打开了通知");
            // 在这里可以自己写代码去定义用户点击后的行为
            Intent i = new Intent(context, WebIndexActivity.class);  //自定义打开的界面
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        } else {
            Log.d(TAG, "Unhandled intent - " + intent.getAction());
        }
    }

    private void processCustomMessage(Context context, Bundle bundle) {

        //title 发送目标
        String title = bundle.getString(JPushInterface.EXTRA_TITLE);
        //message 发送内容
        String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);

        System.out.println("title " + title);
        System.out.println("message " + message);

        showMessageNotification(context, title, message);
    }



    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    void showMessageNotification(Context c, String who, String msg) {

        if (who.equals(BeeFrameworkApp.getInstance().getUser(c))) {
            System.out.println("消息拦截 认证 成功 发送通知 用户为"+BeeFrameworkApp.getInstance().getUser(c));
        } else {
            System.out.println("消息拦截 认证 失败 不发送通知 用户为"+BeeFrameworkApp.getInstance().getUser(c));
            return;
        }


        NotificationManager manager = (NotificationManager) c.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
        Notification no = new Notification();
        PendingIntent pend = PendingIntent.getActivity(c, 1, new Intent(c, WebIndexActivity.class), 0);
        //no.contentIntent=pend;
        // 1、创建一个自定义的消息布局 notification.xml
        // 2、在程序代码中使用RemoteViews的方法来定义image和text。然后把RemoteViews对象传到contentView字段
        //RemoteViews remoteView = new RemoteViews(c.getPackageName(), R.layout.notification);
        //remoteView.setImageViewResource(R.id.image, R.drawable.lbgs_icon);
        //remoteView.setTextViewText(R.id.text , "Hello,this message is in a custom expanded view");
        //no.contentView = remoteView;
        // 3、为Notification的contentIntent字段定义一个Intent(注意,使用自定义View不需要setLatestEventInfo()方法)

        Notification.Builder builder = new Notification.Builder(c);
        // builder.setContentInfo("补充内容");
        builder.setContentText(who + " " + msg);
        builder.setContentTitle("来宾国税排队通知");
        builder.setSmallIcon(R.drawable.lbgs_icon);
        builder.setTicker("排队消息");//在通知栏上的内容的
        builder.setAutoCancel(true);
        builder.setWhen(System.currentTimeMillis());
        builder.setContentIntent(pend);
        builder.setDefaults(Notification.DEFAULT_ALL);// 设置使用默认声音、震动、闪光灯
        no = builder.build();
        try {
            manager.notify(10, no);
        } catch (Exception e) {
            System.out.println(e);
        }

    }

}
Spring Boot入门教程(五十三): 极光推送Java-SDK pom.xml <!-- 极光推送 begin --> <dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.3.10</version> &... 阅读详情

相关推荐

极光推送Demo:移动设备推送服务入门指南

为了实现有效的推送服务,开发者通常依赖于第三方推送服务提供商,例如Firebase Cloud Messaging (FCM)、Apple Push Notification service (APNs)等。这些服务提供商提供了完整的推送服务解决方案,包括消息的构建、发送和管理等功能。在选择解决方案时,开发者需要考虑其稳定性、易用性、扩展性以及成本等因素。之后的章节将详细介绍SDK的集成与配置流程、消息与通知的区别及应用、用户分群与定向推送技术等内容,以便开发者构建和优化自己的推送服务。

weixin_42600128的博客 1046

基于SpringBoot搭建极光推送 Android 和 IOS 消息的简单Demo

简要介绍 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。 概念1:消息 和 通知 通知:发送后会在系统通知栏收到展现,同时响铃或振动提醒用户。 消息:以透传的形式传递给客户端,无显示,发送后不会在系统通知栏展现,第三方应用后需要开发者写代码才能看到。 概念2:...

_夜渐凉 2294

实现极光推送服务的ThinkPHP框架Demo

极光推送(JPush)是一个为移动应用提供高效、稳定的推送服务解决方案。它支持多种平台,如Android、iOS以及Windows Phone等,并集成了通知栏消息、自定义消息、广播消息等多种推送模式。开发者通过极光推送可以轻松实现应用内消息的即时传递,提升用户体验。标签:用于给用户打上一个或多个标签,可以对标签进行增删改查的操作,对标签进行推送可以达到类似广播的效果。

weixin_36382073的博客 895

极光推送 java demo_android 极光推送demo

【实例简介】【实例截图】【核心代码】package jg.demo.com.jiguangtest;import android.app.AlertDialog;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.co...

weixin_39880615的博客 310

极光推送 java服务器demo、Android客户端demo

极光推送 java服务器demo、Android客户端demo极光推送 java服务器demo、Android客户端demo

java-极光推送Demo

自己看极光推送的api有些模糊,自己搜集了一写资料整理出一份java后台提供给前段安卓,和苹果。使用的极光推送。

极光推送---安卓Demo

对于一个一直干.net的程序媛来说,冷不丁的让小编干安卓,那种感觉就好似小狗狗咬小刺猬一样,不知道从哪儿开始下手,对于小编来说,既是挑战更是机遇,因为知识都是相通的,再者来说,在小编的程序人生中,留下最珍贵的记忆,虽然以后小编不一定从事安卓这个行业,代码世界里,很多种事,有的甜蜜,有的温馨,有的婉转成歌,有的绵延不息,在这些故事里,我们唯一的共通之处就是,某年,某月,某个波澜不惊的日子里,曾经很爱

从手指到键盘,谱出生命的轨迹~~~ 3251

自己集成的极光推送内容

今天新做了一个项目,以前推送的时候用过百度云推送,发现百度云推送到达的太慢,然后使用的是个推进行推送的,发现还是可以吧,然后最近一个项目做IOS的哥们说他集成过极光的,但是集成个推的不太会,好吧,既然都这样说了,我就再次尝试集成一下极光推送,也正好比较一下。

极光推送java demo_极光推送 - 3 分钟 Demo - 极光文档

3 分钟快速使用 JPush Android Demo本文目的在于,指导新接触极光推送的开发者,在短短几分钟时间内把极光推送跑起来:安装 Demo 客户端到手机在 Portal 上推送通知客户端收到推送并显示在状态栏创建极光推送开发者帐号Portal 上创建应用使用注册账号登陆,进入极光控制台后,点击“创建应用”按钮,填写应用名称即可创建应用成功。点击“推送设置”,在 Android 版块填上你的...

weixin_39931362的博客 351

极光推送demo(绝对不是官方的demo)

绝对不是官方自动生成的demo,要说唯一的相同点,就是设置免打扰时段是直接复制过来的,之前被极光折磨时,也找了很多demo子看看,但是那些demo要么是官方原版,要么是稍微改动一下,依然换汤不换药.我的这个demo不能说多好,但至少不是官方demo并且界面做的还算可以,至少我自己这样认为

别再硬拔了!用这3个终端命令轻松搞定Mac上移动硬盘‘被程序占用’的问题

本文介绍了3个终端命令解决Mac上移动硬盘‘被程序占用’的问题,包括使用`diskutil list`定位硬盘、`lsof`查找占用进程以及`diskutil unmount`安全卸载。这些方法能有效避免数据风险,提升操作效率,特别适合开发者和技术爱好者。

weixin_33507732的博客 297

JPush极光推送快速创建Android Demo

第一步:创建极光推送开发者帐号第二步:Portal上创建应用第三步:下载应用Example第四步:把Example(Android项目)导入 Eclipse 里第五步:运行 Example 这个应用第六步:Portal上推送消息第七步:手机上收到消息第八步:在LogCat中查看收到的消息 本文目的在于,指导新接触极光推送的开发者,在短短几分钟时间内把极光推送跑起来: 安装Demo客

小地盘的诺克萨斯 2284

我的AI学习 ai维护工具之langfuse

as_type: Optional[Literal[‘generation’]] = None, # 将记录定义为 Observation (LLM 调用)transform_to_string: Optional[Callable[[Iterable], str]] = None # 将输出转为 string。要用LangFuse的云服务,首先要在LangFuse官网上注册,注册完后将页面拉倒最后,点免费的SignUp,API文档:https://api.reference.langfuse.com/

liubaobin的博客 4096

Swift使用极光推送JPush的Demo

JPushDemo github项目地址 需要导入JPush框架,可以使用cocoapod导入,也可以手动导入 环境配置 配置环境可以参考极光推送的官方文档: iOS 证书设置指南 iOS SDK 集成指南 iOS SDK API 使用说明 待环境配置好了之后,就可以进入极光推送开始推送消息了 极光推送首页 推送使用示例如下: 发送通知 发送自定义消息 代码...

麻豆_matou 5649

sentinel滑动时间窗口算法学习

滑动时间窗口 先不说sentinel的算法实现,先说什么是滑动时间窗口, 我们在进行限流的时候,比如通过QPS进行限流,那假如我们以秒为单位,举个例子: 我设置了限流规则,qps是10 如果不使用滑动窗口算法,在统计qps的时候,就有可能会有问题,比如: 在0 - 500ms中的请求数是0,但是在500ms - 1000 ms的请求数是10;在1000ms - 1500ms 之间又进来了5个请求,此时只判断了1000ms - 2000 ms之间的请求数 因为没有把1S进行拆分多个窗口,所以在1000ms之后

小小少年的博客 3982

Python爬取网页数据并写入Excel

ChromeDriver下载链接:https://registry.npmmirror.com/binary.html?path=chromedriver/本例是从Excel表从读取数据,运用到网页中进行搜索,再将结果写入Excel表中。这里要先下载与Chrome版本相同的chromedriver(版本要相同!下载好后,将chromedriver路径正确配置在环境变量中。刚才爬了一些数据,分享一下代码。

weixin_68443051的博客 2524

Android极光推送集成以及极光验证码注册Demo

极光推送以及极光验证码>极光推送>配置主要特点产品功能说明客户端维持连接占用资源少、耗电低 SDK丰富的接口,可定制通知栏提示样式 服务器大容量、稳定 jpush-android-release-3.x.y.zip 集成压缩包内容AndroidManifest.xml 客户端嵌入SDK参考的配置文件 libs/jcore-android.v1.x.y.jar 极光开发者服务的核心包。

qq_33915851的博客 1257

Cadence仿真MOS电容C-V曲线:从电路图到参数扫描的完整流程

本文详细介绍了使用Cadence Virtuoso仿真MOS电容C-V曲线的完整流程,从电路图绘制到参数扫描,再到结果分析与问题排查。通过实际案例和实用技巧,帮助工程师快速掌握MOS电容特性分析的关键步骤,提升集成电路设计效率。

weixin_29271263的博客 431

极光推送Cordova插件—AndroidStudio运行Demo

上一章节讲述了极光推送配置插件到Cordova项目中 本章节讲述在AndroidStudio中运行极光推送的Demo 本人下载的官方插件Demo位置:D:\Cordova\JPush\jpush-phonegap-plugin-master 本人配置的Cordova项目位置:D:\Cordova\JPush\JPushDemo1 1.按照上一章节完成配置后

听海的博客 1839

AS5600磁编码器选型与安装避坑指南:磁铁形状、间隙距离到底怎么选?(附实测数据)

本文详细解析了AS5600磁编码器的选型与安装要点,包括磁铁形状、间隙距离等关键参数的选择,并附有实测数据支持。特别针对Arduino和I2C接口的应用场景,提供了硬件选型和机械安装的实用指南,帮助开发者避免常见陷阱,提升系统精度和稳定性。

weixin_27038245的博客 290

告别简陋行情!在Ubuntu24.04系统用Wine9.0跑同花顺远航版的全流程记录

本文详细记录了在Ubuntu 24.04系统上,通过Wine 9.0兼容层成功安装并流畅运行同花顺远航版的全过程。文章对比了该方案与官方简陋Linux原生版本的功能差异,重点解决了高分辨率屏幕下的字体与界面显示问题,并提供了关键配置调优与长期维护建议,为Linux用户提供了功能完备的专业金融行情解决方案。

weixin_29207533的博客 1078

极光推送demo下载运行错误

极光推送demo 运行错误的解决方案

xiaonadiandian的专栏 1940

Android 17为什么会重写MessageQueue

DeliQueue 通过消除 MessageQueue 中的锁,提升了系统和应用的性能。合成基准测试: 得益于并发能力的提升(Treiber 栈)和更快的插入速度(最小堆),向繁忙队列进行多线程插入的速度比传统 MessageQueue 快了高达 5000 倍。Perfetto 追踪分析: 在从内部测试人员处获取的 Perfetto 追踪记录中,我们看到应用主线程在锁竞争上消耗的时间减少了 15%。

xiangzhihong8的专栏 271

极光推送demo(一)

极光推送 操作步骤 一、生成自己的appKey 到官网注册,并创建项目。 这里的 appKey 和 masterSecret 一会儿用。 二、导入代码 导入后项目结构如下 换上将自己的 appKey 和 masterSecret 三、从官网生成自接收端demo 生成后操作: 1.android studio新建一个应用; 2.根据官网提示,将下载的文件,导...

qq_33175093的博客 3577

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: mysql用户表
下一篇: windows无法连接虚拟机的linux
kernel_
博客等级 码龄12年 8粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值