Android系统消息推送

现在好多应用都接入了推送功能,市面上也有很多关于推送的第三方,例如极光等等,那么我们需求不大,接入极光会造成很大的资源浪费,下面我们来看下利用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中注册

<service android:name=".ui.Service.PushSmsService"></service>  


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

 

 public void startService() {
        Intent intent = new Intent(this, PushSmsService.class);
        // 启动服务
        startService(intent);
    }


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

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值