android推送服务端,Android实现系统消息推送

本文介绍了如何在Android应用中实现本地推送消息,避免使用第三方推送服务如极光推送可能导致的资源浪费。通过创建一个Service,结合NotificationManager、PendingIntent和Thread,实现在特定时间(例如下午3点)向用户发送提醒。这种方法可以自定义推送内容,并在应用全局范围内运行。
摘要由CSDN通过智能技术生成

现在好多应用都接入了推送功能,市面上也有很多关于推送的第三方,例如极光等等,那么我们需求不大,接入极光会造成很大的资源浪费,下面我们来看下利用android服务进行本地推送消息。

1.注册一个Service

import android.annotation.TargetApi;

import android.app.Notification;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.app.Service;

import android.content.Context;

import android.content.Intent;

import android.os.Build;

import android.os.IBinder;

import java.util.Calendar;

/**

* Created by 70883 on 2017/8/10.

*/

public class PushSmsService extends Service {

private NotificationManager manager;

private PendingIntent pi;

private MyThread myThread;

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onCreate() {

myThread = new MyThread();

myThread.start();

super.onCreate();

}

@Override

public void onDestroy() {

super.onDestroy();

}

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)

private void notification() {

// 获取系统的通知管理器

manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

Intent intent = new Intent(getApplicationContext(),

MainActivity.class);

pi = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);

Notification notification = new Notification.Builder(getApplicationContext())

.setAutoCancel(true)

.setContentText("工作在忙,也要吃饭哦")

.setContentIntent(pi)

.setSmallIcon(R.mipmap.ic_icon)

.setWhen(System.currentTimeMillis())

.build();

notification.defaults = Notification.DEFAULT_ALL; // 使用默认设置,比如铃声、震动、闪灯

notification.flags = Notification.FLAG_AUTO_CANCEL; // 但用户点击消息后,消息自动在通知栏自动消失

notification.flags |= Notification.FLAG_NO_CLEAR;// 点击通知栏的删除,消息不会依然不会被删除

manager.notify(0, notification);

}

private class MyThread extends Thread{

private Calendar c ;

@Override

public void run() {

while (true){

c = Calendar.getInstance();

if(c.get(Calendar.HOUR_OF_DAY) == 15){

try {

notification();

sleep(1000*60*60);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

}

2.在AndroidMan中注册

3.由于我是需要全局应用就在Application中进行启动了

public void startService() {

Intent intent = new Intent(this, PushSmsService.class);

// 启动服务

startService(intent);

}

4.也可以配合服务端使用,定时推送消息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值