文档章节

极光推送

Android攻城狮
 Android攻城狮
发布于 2015/08/21 13:19
字数 1120
阅读 137
收藏 1

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 样式。

?

1
BasicPushNotificationBuilder builder = newBasicPushNotificationBuilder(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<Integer> weekDays, int startHour, intendHour)

参数说明
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<String> 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展示到通知栏上。其内容完全由开发者自己定义。
自定义消息主要用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示。


本文转载自:

Android攻城狮
粉丝 0
博文 30
码字总数 0
作品 0
朝阳
程序员
私信 提问
《极光征文》颁奖 | 恭喜你完成 2019 第一个小目标

极光年度征文活动圆满结束,这是小光陪大家走过的第三个年头,今年,我们收获了数篇优质文章,结识了诸多优秀的创作人,希望未来继续携手同行,共同进步。 感谢诸位的用心创作,感谢诸位对极...

极小光
01/25
0
0
极光开发者服务推出统计产品JAnalytics

  极光以提供更加全面的开发者服务为目标,利用极光推送的数据和网络优势结合更丰富的功能,推出了极光统计(英文:JAnalytics)。至此,极光开发者服务更加丰富、完善了。   极光统计有独...

极光推送
2016/12/19
2.3K
0
极光推送5大新产品闪耀亮相

  2015 年 11 月 19 日, GITC2015 全球互联网技术大会在北京国家会议中心盛大开幕。 GITC 是目前国内规模最大、资源最成熟的移动互联网技术交流平台。极光推送应邀出席大会,并首次集中展...

极光推送
2015/11/24
60
0
极光品牌全面升级,三大产品体系震撼推出

6月,国内领先的一站式开发者服务平台极光推送发表公开声明,宣布品牌正式全面升级为大数据综合服务商“极光”,并隆重推出极光三大产品体系:极光开发者服务,极光广告服务与极光数据服务。...

Penny.
2016/06/13
2.3K
3
我和极光那些事 | 我和Android推送的时间简史

2017年 3月3日 「极光」跟我的渊源真的是极深的,说到极光,不得不追溯到 2017年 3月3日,当时正做毕设项目趣闻。基本的预期功能已经实现了,开始考虑集成推送功能,鉴于水平和时间的约束,决...

下位子
2018/01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
9
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部