我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android顶栏定时推送消息

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android顶栏定时推送消息

在用安卓设备时,经常会应用到弹出推送消息。下面在此把我之前写的推送代码分享给大家,供大家参考,有不同见解的朋友欢迎提出,共同学习进步!

最近搜索看这个的朋友比较多。这个也只是单独的内置推送。时时推送与服务器关联 我们可以用SDK云推送来实现我们所需的需求。相关介绍内容。往下移!

首先XML


<!-- 安卓推送服务 -->
<service android:name=".MessageService"
android:enabled="true"
android:exported="true"
android:label="PushService"
android:launchMode="singleInstance"
android:persistent="true"
android:process=":push" >
<intent-filter>
<action android:name="com.xxxx.action.MY_SERVICE" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</service>
<receiver
android:name="com.tt.xxxxx.download.GTAlarmReceiver"
android:permission="com.android.launcher.permission.INSTALL_SHORTCUT"
android:enabled="true"
android:exported="true"
>
<intent-filter>
<action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
</intent-filter>
</receiver>
<!--end add-->

里面的. :。这些符号很坑爹。不懂的可以查下字段属性说明。

推送类:



package com.ttad.yxcb;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import com.tt.yingxiongchibis.download.GTDownloaderActivity;
public class MessageService extends Service {
//获取消息线程
private MessageThread messageThread = null;
//点击查看
private Intent messageIntent = null;
private PendingIntent messagePendingIntent = null;
//通知栏消息
private int messageNotificationID = 1000;
private Notification messageNotification = null;
private NotificationManager messageNotificatioManager = null;
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
//初始化
messageNotification = new Notification();
messageNotification.icon = R.drawable.app_icon_ucs;
messageNotification.tickerText = "알림";
messageNotification.defaults = Notification.DEFAULT_SOUND;
messageNotificatioManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//点击跳转的activity
messageIntent = new Intent(this, GTDownloaderActivity.class);
messagePendingIntent = PendingIntent.getActivity(this,0,messageIntent,0);
//开启线程
messageThread = new MessageThread();
messageThread.isRunning = true;
messageThread.start();
//Toast.makeText(MessageService.this, "", Toast.LENGTH_LONG).show();
super.onCreate();
}

class MessageThread extends Thread{
//运行状态,下一步骤有大用
public boolean isRunning = true;
public void run() {
while(isRunning){
try {
//休息10分钟
Thread.sleep(1000);
//获取服务器消息
String serverMessage = getServerMessage();
if(serverMessage!=null&&!"".equals(serverMessage)){
//更新通知栏
messageNotification.setLatestEventInfo(MessageService.this,"알림",serverMessage,messagePendingIntent);
messageNotificatioManager.notify(messageNotificationID, messageNotification);
//每次通知完,通知ID递增一下,避免消息覆盖掉
messageNotificationID++;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
@Override
public void onDestroy() {
// System.exit(0);
//或者,二选一,推荐使用System.exit(0),这样进程退出的更干净
messageThread.isRunning = false;
//super.onDestroy();
}

public String getServerMessage(){
SimpleDateFormat sdf=new SimpleDateFormat("HHmmss");
String date=sdf.format(new java.util.Date());
String in = date;
if(date.equals("195500"))
{
String str = "잠시후 전쟁터 시작됩니다. 준비해주세요.";
return str;
}
else if(date.equals("212500"))
{
String str = "잠시후 보스전 시작됩니다. 준비해주세요.";
return str;
}
else
{
return "";
}
}
}

最后,调用方式:


//推送
Intent intent = new Intent();
// 设置Action属性
intent.setAction("com.ttad.yxcb.action.MY_SERVICE");
// 启动该Service
startService(intent);
// startService(new Intent(ExTextActivity.this, MessageService.class));

Android消息推送知识补充:

1.引言

  所谓的消息推送就是从服务器端向移动终端发送连接,传输一定的信息。比如一些新闻客户端,每隔一段时间收到一条或者多条通知,这就是从服务器端传来的推送消息;还比如常用的一些IM软件如微信、GTalk等,都具有服务器推送功能。

  推送方法如下:

  1)通过SMS进行服务器端和客户端的交流通信。

  在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,且依赖于运营商。

  2)循环主动定时获取

  这种方法需要客户端来做一个定时或者周期性的访问服务器端接口,以获得最新的消息。轮询的频率太慢可能导致某些消息的延迟,太快则会大量消耗网络带宽和电池。

  3)持久连接

  这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池。我们需要开一个服务来保持和服务器端的持久连接(苹果就和谷歌的C2DM是这种机制)。但是对于Android系统,当系统可用资源较低,系统会强制关闭我们的服务或者是应用,这种情况下连接会强制中断。(Apple的推送服务之所以工作的很好,是因为每一台手机仅仅保持一个与服务器之间的连接,事实上C2DM也是这么工作的。即所有的推送服务都是经由一个代理服务器完成的,这种情况下只需要和一台服务器保持持久连接即可。C2DM=Cloud to Device Messaging)。

  相比之下第三种还是最可行的。为软件编写系统服务或开机启动功能;或者如果系统资源较低,服务被关闭后可以在onDestroy ()方法里面再重启该服务,进而实现持久连接的方式。

  C2DM内置于Android的2.2系统上,无法兼容老的1.6到2.1系统;且依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用。

  建立在TCP协议之上的XMPP协议,不仅可提供可这种持久连接的功能,能实现服务器和客户机的双工通信,还能不依赖与系统版本和google服务器的限制,提供了比较好的解决方案。

2. XMPP协议

  XMPP全称Extensible Messaging and Presence Protocol,前身是Jabber项目,是一种以XML为基础的开放式即时通讯协议。XMPP因为被Google Talk和网易泡泡应用而被广大网民所接触。XMPP的关键特色是,分散式的即时通讯系统,以及使用XML串流。XMPP目前被IETF国际标准组织完成了标准化工作。

  Android push notification(androidpn) 是一个基于XMPP协议的java开源实现,它包含了完整的客户端和服务器端。该服务器端基本是在另外一个开源工程openfire基础上修改实现的。

  androidpn客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,不过我们不需要自己编译,可以直接把androidpn客户端里面的asmack.jar拿来使用。客户端利用asmack中提供的XMPPConnection类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,同样也是通过这条连接,接收服务器发送的通知。

  androidpn服务器端也是java语言实现的,基于openfire开源工程,不过它的Web部分采用的是spring框架,这一点与openfire是不同的。Androidpn服务器包含两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的XMPPConnection类进行通信,作用是用户注册和身份认证,并发送推送通知消息。另外一部分是Web服务器,采用一个轻量级的HTTP服务器,负责接收用户的Web请求。服务器的这两方式,意义非凡:当相应的TCP端口被防火墙封闭,可以使用轮询的方式进行访问,因此又有助于通过防火墙。

您可能感兴趣的文章:Android中利用App实现消息推送机制的代码Android开发笔记之:消息循环与Looper的详解android的消息处理机制(图文+源码分析)—Looper/Handler/MessageAndroid中使用WebSocket实现群聊和消息推送功能(不使用WebView)Android中通过Notification&NotificationManager实现消息通知Android消息处理机制Looper和Handler详解android开发教程之使用looper处理消息队列Android中使用socket通信实现消息推送的方法详解android使用NotificationListenerService监听通知栏消息深入浅析Android消息机制android通过google api获取天气信息示例Android调用google地图生成路线图实现代码Android编程实现google消息通知功能示例


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android顶栏定时推送消息

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android顶栏定时推送消息

在用安卓设备时,经常会应用到弹出推送消息。下面在此把我之前写的推送代码分享给大家,供大家参考,有不同见解的朋友欢迎提出,共同学习进步! 最近搜索看这个的朋友比较多。这个也只是单独的内置推送。时时推送与服务器关联 我们可以用SDK云推送来实现
2022-06-06

android消息推送机制是什么

Android消息推送机制是一种通过网络将消息推送给已经安装了应用程序的Android设备的技术。它主要依靠Google提供的Firebase Cloud Messaging(FCM)服务来实现。在Android应用程序中,开发者可以集成F
2023-09-28

Linux推送服务的消息推送时间段优化

要优化Linux推送服务的消息推送时间段,可以考虑以下几点:确定目标用户的活跃时间段:了解用户的活跃时间段是非常重要的,可以通过数据分析或用户调查来获取这些信息。根据用户的活跃时间段,选择在用户最可能注意到消息的时候进行推送。避免推送在用户
Linux推送服务的消息推送时间段优化
2024-08-24

PHP实现异步定时多任务消息推送

在PHP中实现异步定时多任务消息推送的方式有多种,其中一种常用的方式是使用异步任务队列,这篇文章主要介绍了这一方法的具体实现,需要的可以参考一下
2023-05-15

Java实现给微信群中定时推送消息

这篇文章主要为大家详细介绍了Java如何实现给微信群中定时推送消息的功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以了解一下
2022-12-30

Android几种消息推送方案总结

首先看一张国内Top500 Android应用中它们用到的第三方推送以及所占数量:现在总结下Android平台下几种推送方案的基本情况以及优缺点: 一、使用GCM(Google Cloude Messaging) Android自带的推送G
2022-06-06

Android消息推送:手把手教你集成小米推送(附demo)

前言 在Android开发中,消息推送功能的使用非常常见。为了降低开发成本,使用第三方推送是现今较为流行的解决方案。 今天,我将手把手教大家如何在你的应用里集成小米推送 目录1. 官方Demo解析 首先,我们先对小米官方的推送Demo进行解
2022-06-06

PHP怎么实现异步定时多任务消息推送

这篇“PHP怎么实现异步定时多任务消息推送”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP怎么实现异步定时多任务消息推送
2023-07-06

python实现定时发送qq消息

因为生活中老是忘记各种事情,刚好又在学python,便突发奇想通过python实现提醒任务的功能(尽管TIM有定时功能),也可定时给好友、群、讨论组发送qq消息。其工作流程是:访问数据库提取最近计划——>根据数据内容(提醒时间、提醒对象、提
2023-01-31

利用Socket.io 实现消息实时推送功能

项目背景介绍最近在写的项目中存在着社交模块,需要实现这样的一个功能:当发生了用户被点赞、评论、关注等操作时,需要由服务器向用户实时地推送一条消息。最终完成的项目地址为:https://github.com/noiron/socket-mes
2023-05-30

Linux推送服务的消息推送与即时通讯协议的对比

Linux推送服务:Linux推送服务通常采用类似MQTT、AMQP等消息推送协议,是一种用于实时传输消息的轻量级协议。它主要用于在服务器和客户端之间传递实时数据,比如推送通知、更新信息等。Linux推送服务可以很好地支持大规模的消息推送,
Linux推送服务的消息推送与即时通讯协议的对比
2024-08-23

Linux推送服务的消息推送与实时日志分析的结合

Linux推送服务可以通过实时日志分析来提供更加精准和及时的消息推送,可以实现以下几个方面的功能:实时监控日志:通过实时监控服务器的日志文件,可以快速发现和定位系统故障或异常情况,及时通知相关人员进行处理。实时告警推送:当系统出现异常或重要
Linux推送服务的消息推送与实时日志分析的结合
2024-08-23

Android第三方消息推送功能怎么实现

要实现Android第三方消息推送功能,可以使用以下步骤:注册一个第三方消息推送平台,例如Firebase Cloud Messaging (FCM)、JPush、推送宝等,获得一个唯一的应用标识和密钥。在Android应用的build.g
2023-10-25

前端与RabbitMQ实时消息推送怎么实现

这篇文章主要讲解了“前端与RabbitMQ实时消息推送怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“前端与RabbitMQ实时消息推送怎么实现”吧!web 端实时消息推送,常用的实现
2023-06-27

Android中利用App实现消息推送机制的代码

1.消息推送机制 服务器器端需要变被动为主动,通知客户一些开发商认为重要的信息,无论应用程序是否正在运行或者关闭。 我想到了一句话:don't call me,i will call you! qq今天在右下角弹出了一个对话框:"奥巴马宣布
2022-06-06

PHP和WebSocket: 实现实时消息推送的高效方案

PHP和WebSocket: 实现实时消息推送的高效方案在Web应用程序中,实时消息推送是一项常见的需求。传统的基于HTTP协议的请求-响应模式无法满足实时性要求,因此需要采用其他技术来实现实时消息推送。WebSocket是一种能够在浏览器
PHP和WebSocket: 实现实时消息推送的高效方案
2023-12-18

使用php开发Websocket,打造实时消息推送系统

使用PHP开发WebSocket,打造实时消息推送系统引言随着实时通信需求的增加,基于WebSocket的实时消息推送系统在Web开发中越来越受欢迎。本文将介绍如何使用PHP开发一个简单的WebSocket应用,实现实时消息推送功能。什么是
使用php开发Websocket,打造实时消息推送系统
2023-12-09

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录