温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android如何实现系统消息推送

发布时间:2020-07-22 14:07:59 来源:亿速云 阅读:189 作者:小猪 栏目:开发技术

这篇文章主要讲解了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.也可以配合服务端使用,定时推送消息

看完上述内容,是不是对Android如何实现系统消息推送有进一步的了解,如果还想学习更多内容,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI