博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
极光推送JPush
阅读量:6082 次
发布时间:2019-06-20

本文共 4682 字,大约阅读时间需要 15 分钟。

hot3.png

1.设置

AndroidManifest.xml

libs/jpush-sdk-release 1.x.y.jar
libs/armeabi/libsys 1.x.y.so

2.基础API

  • init 初始化SDK

  • setDebugMode 设置调试模式

3.MyReceiver

/** * 自定义接收器 *  * 如果不定义这个 Receiver,则: * 1) 默认用户会打开主界面 * 2) 接收不到自定义消息 */public class MyReceiver extends BroadcastReceiver {    private static final String TAG = "MyReceiver";    @Override    public void onReceive(Context context, Intent intent) {        Bundle bundle = intent.getExtras();        Log.d(TAG, "onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));        if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {            String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);            Log.d(TAG, "接收Registration Id : " + regId);            //send the Registration Id to your server...        }else if (JPushInterface.ACTION_UNREGISTER.equals(intent.getAction())){            String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);            Log.d(TAG, "接收UnRegistration Id : " + regId);          //send the UnRegistration Id to your server...        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {            Log.d(TAG, "接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));        } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {            Log.d(TAG, "接收到推送下来的通知");            int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);            Log.d(TAG, "接收到推送下来的通知的ID: " + notifactionId);        } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {            Log.d(TAG, "用户点击打开了通知");            //打开自定义的Activity            Intent i = new Intent(context, TestActivity.class);            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(i);        } else {            Log.d(TAG, "Unhandled intent - " + intent.getAction());        }    }    // 打印所有的 intent extra 数据    private static String printBundle(Bundle bundle) {        StringBuilder sb = new StringBuilder();        for (String key : bundle.keySet()) {            if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {                sb.append("nkey:" + key + ", value:" + bundle.getInt(key));            } else {                sb.append("nkey:" + key + ", value:" + bundle.getString(key));            }        }        return sb.toString();    }}

4.自定义通知样式

定制声音、震动、闪灯等 Notification 样式。

BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(MainActivity.this);builder.statusBarDrawable = R.drawable.jpush_notification_icon;builder.notificationFlags = Notification.FLAG_AUTO_CANCEL;  //设置为自动消失builder.notificationDefaults = Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE;  // 设置为铃声与震动都要JPushInterface.setPushNotificationBuilder(1, builder);

5.高级自定义通知样式

基于基础的 PushNotificationBuilder,可进一步地定制 Notification 的 Layout。

CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(MainActivity.this,    R.layout.customer_notitfication_layout, R.id.icon, R.id.title, R.id.text);  // 指定定制的 Notification Layoutbuilder.statusBarDrawable = R.drawable.your_notification_icon;      // 指定最顶层状态栏小图标builder.layoutIconDrawable = R.drawable.your_2_notification_icon;   // 指定下拉状态栏时显示的通知图标JPushInterface.setPushNotificationBuilder(2, builder);

6.设置保留最近通知条数

默认5条

public static void setLatestNotifactionNumber(Context context, int maxNum)

7.设置允许推送时间

public static void setPushTime(Context context, Set
 weekDays, int startHour, int int endHour)

参数说明

Context context 应用的ApplicationContext
Set days 0表示星期天,1表示星期一,以此类推。 (7天制,Set集合里面的int范围为0到6)
Sdk1.2.9 – 新功能:set的值为null,则任何时间都可以收到消息和通知,set的size为0,则表示任何时间都收不到消息和通知.
int startHour 允许推送的开始时间 (24小时制:startHour的范围为0到23)
int endHour 允许推送的结束时间 (24小时制:endHour的范围为0到23)

8.别名与标签

public static void setAliasAndTags(Context context, String alias, Set
 tags)

调用此 API 来同时设置别名与标签。

需要理解的是,**这个接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置。**
在之前调用过后,如果需要再次改变别名与标签,只需要重新调用此 API 即可。

Android 在调用此接口时,建议 Set 的实现使用LinkedHashSet,即会保证排序的 Set。这样,当你调用接口 tags 多于 100 个时,保证前 100 个被 JPush 成功地设置。

参数定义

alias
null 此次调用不设置此值。(注:不是指的字符串"null")
"" (空字符串)表示取消之前的设置。
每次调用设置有效的别名,覆盖之前的设置。
有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
限制:alias 命名长度限制为 40 。

tags

null 此次调用不设置此值。(注:不是指的字符串"null")
空数组或列表表示取消之前的设置。
每次调用至少设置一个 tag,覆盖之前的设置,不是新增。
有效的标签组成:字母(区分大小写)、数字、下划线、汉字。
限制:每个 tag 命名长度限制为 40,最多支持设置 100 个 tag,但总长度不得超过1K字节。

9.通知与自定义消息

通知

或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。这是 Android / iOS 的基本功能。
一条通知,简单的填写纯文本的通知内容即可。
通知主要用于提示用户的目的。应用加上通知功能,有利于提高应用的活跃度。

自定义消息

是极光推送自己的概念。
自定义消息不是通知,所以不会被SDK展示到通知栏上。其内容完全由开发者自己定义。
自定义消息主要用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示。

转载于:https://my.oschina.net/bv10000/blog/300444

你可能感兴趣的文章
Spring 5 core 中的 @NonNull 是个什么鬼?!
查看>>
vsftpd系列--2--匿名访问控制
查看>>
Excel工作表保护破解方法
查看>>
实现geo相关
查看>>
SSM项目搭建三(终)
查看>>
vmware esxi基础篇之模版与克隆
查看>>
拥抱 Gradle: 下一代自动化工具
查看>>
CyclicBarrier让多线程齐步走
查看>>
tomcat与web程序结构与Http协议与HttpUrlConnection
查看>>
PHPStorm下调试使用CURL抓取数据中文乱码的一种可能
查看>>
解决hadoop namenode -format / hdfs namenode -format 找不到java的文件目录
查看>>
springMVC 几种页面跳转方式
查看>>
Python的集合类型详解17
查看>>
HBase配置优化
查看>>
英特网级别的服务设计及部署
查看>>
动态路由
查看>>
mssql dba問題與答案
查看>>
悦悦走好
查看>>
分享一些 Kafka 消费数据的小经验
查看>>
我的友情链接
查看>>