美文网首页
原生消息推送

原生消息推送

作者: gogoingmonkey | 来源:发表于2017-04-26 11:37 被阅读42次
     现在项目中,很多都是用的是第三方的消息推送,个推、魔推等消息推送都有相关文档,比如个推还有一个简单的Demo,确实几分钟就能集成,但是里面还是有很多的坑!今天主要说说安卓原生的通知。
    消息推送可以写在服务,广播,活动中,但是大多数时间都是卸载服务广播中的,因为只有当不在这个活动中了,一般使用通知,直接上代码:
NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                Notification builder = new NotificationCompat.Builder(MainActivity.this).setContentText("SSsss").setAutoCancel(true).setContentTitle("title")
                        .setSmallIcon(R.mipmap.ic_launcher).setSound(Uri.fromFile(new File("system/media/audio/ringtones/Luna.ogg")))
                        .setLights(Color.GREEN,1000,1000).setVibrate(new long[]{0,1000,1000,1000,10000}).setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                        .setStyle(new NotificationCompat.BigTextStyle().bigText("sssssssssssssssswwwwwwwwwwssssssssssssss")).setPriority(Notification.PRIORITY_MAX).build();
                systemService.notify(1, builder);
      对以上代码简单解释下:先获取系统服务的通知服务,然后使用NotificationCompat这个类创建对象,因为系统每个版本对通知这块的API改动都比较大,所以使用整个类能做到兼容。然后再设置显示标题,图像等一系列信息。最后使用notify方法,注意该方法的第一个参数必须不同于其他的通知;
   按照上面代码,运行到手机上,却不能点击,  这就引出了pendingintent;

PendingIntent 使用

    这个和Intent都可以发送一个意图,但是他们的区别在于Intent 是立即执行这个意图,而PendingInetnt 则是在某个指定的时间点去发送这个意图。
      PendingIntent提供了几个静态的方法getActivity, getboradcast,getserver这个几个方法,参数都一样,有四个第一个是一个上下文,第二个参数我从来没用过,几乎是用不到的,传0就可以,第三个参数就是意图,第四个参数,是一个模式,棘突的可以看下文档,一般使用传(context,0,intent,0);  添加到通知的使用就是在链式后面加上 . setContentintent(pi)传入PendingIntent的实例;
 Intent intent = new Intent(MainActivity.this, DeaitalActivity.class);
                PendingIntent activity = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
                NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                Notification builder = new NotificationCompat.Builder(MainActivity.this).setContentText("SSsss").setContentIntent(activity).setAutoCancel(true).setContentTitle("title")
                        .setSmallIcon(R.mipmap.ic_launcher).setSound(Uri.fromFile(new File("system/media/audio/ringtones/Luna.ogg")))
                        .setLights(Color.GREEN,1000,1000).setVibrate(new long[]{0,1000,1000,1000,10000}).setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                        .setStyle(new NotificationCompat.BigTextStyle().bigText("sssssssssssssssswwwwwwwwwwssssssssssssss")).setPriority(Notification.PRIORITY_MAX).build();
                systemService.notify(1, builder);
    这样就解决了通知的点击事件,然后当你点击了你会发现通知栏怎么还有,那是因为通知需要我们处理才会消失,让他消失有两种方式:1.在链式调用后加上.setAutoCancel(true)让自动取消;2.获取到系统服务的通知对象调用这个服务对象的 .cancle(1)方法,这个1就是刚才我们创建这个通知的id号码;

上面的 NotificationCompat.Builder 还提供了其他setSound()发送

.setSmallIcon(R.mipmap.ic_launcher).setSound(Uri.fromFile(new File("system/media/audio/ringtones/Luna.ogg"))).setVibrate(new long[]{0,1000,1000,1000,10000})  震动,或声音
    上面的还提供了API。 可以设置富文本       setStyle( ) 
.setStyle(new NotificationCompat.BigTextStyle().bigText("sssssssssssssssswwwwwwwwwwssssssssssssss")).setPriority(Notification.PRIORITY_MAX).build();

手机震动还需要加上权限:

<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
      最后提醒下,这个通知最好是比较重要的内容,以免引起用户的反感,导致我们的引用别卸载!
    附上一个demo: https://github.com/zh2016hz/NotifydataDemo.git

相关文章

  • 原生消息推送

    PendingIntent 使用 上面的 NotificationCompat.Builder 还提供了其他se...

  • Flutter 63: 图解 Flutter 集成极光 JPus

    我们每天都在接收各种推送消息,而最初的 Flutter 推送主要是与原生交互进行;现阶段极光推出了 Flutter...

  • 消息推送

    推送通知的呈现效果总结 推送通知有5种不同的呈现效果1、在屏幕顶部显示一块横幅(显示具体内容)2、在屏幕中间弹出一...

  • 消息推送

    1、.简述一下消息推送的流程 2、如果不依赖APNS,如何在App进入后台时保证能够接收到远程消息?

  • 消息推送

    推送概念? APNs:Apple Push Notification Service,远程通知只能APNs服务器发...

  • 消息推送

    本地推送 @implementation AppDelegate 远程推送http://blog.csdn.net...

  • 消息推送

  • 消息推送

    http://blog.csdn.net/showhilllee/article/details/8631734

  • 消息推送

    https://www.jianshu.com/p/c58f8322a278

  • 消息推送

    1 什么是消息推送 很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或...

网友评论

      本文标题:原生消息推送

      本文链接:https://www.haomeiwen.com/subject/nwcizttx.html