前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >极光推送的简单实现方法

极光推送的简单实现方法

作者头像
胖虎哥
发布2023-05-10 18:50:26
7880
发布2023-05-10 18:50:26
举报

极光推送的简单实现方法


第一步

导入其jar包和so文件这点不再详解, 但是要注意的一点就是: 个人感觉极光的demo还是有些地方需要改进的, 不建议使用,但是里面的代码是需要我们自己拿的, 我这里主要就是拿到的服务器端发过来的消息推送。

第二步

代码语言:javascript
复制
设置清单文件,要注意的是官方已经明确的说了:
代码语言:javascript
复制
下面就是我的清单文件代码,以及所要修改的地方都做了一些批注

1.

自定义权限
自定义权限

代码:

代码语言:javascript
复制
          <permission
        android:name="包名.permission.JPUSH_MESSAGE"
        android:protectionLevel="signature" />
        //要注意的是, 使用自定义权限的时候:
        <uses-permission android:name="这里也要修改成包名.permission.JPUSH_MESSAGE" />

2.

meta_data
meta_data
代码语言:javascript
复制
  <!-- Required  . Enable it you can get statistics data with channel -->
        <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
        <meta-data android:name="JPUSH_APPKEY" android:value="你的 ak" />

3.

0直接复制即可
0直接复制即可
代码语言:javascript
复制
  <!-- Required SDK核心功能-->
        <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>

        <!-- Required SDK核心功能-->
        <receiver
            android:name="cn.jpush.android.service.PushReceiver"
            android:enabled="true"
            android:exported="false">
            <intent-filter android:priority="1000">
                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />   <!--Required  显示通知栏 -->
                <category android:name="应用包名" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.USER_PRESENT" />
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
            <!-- Optional -->
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
                <data android:scheme="package" />
            </intent-filter>

        </receiver>

4.

xml布局最后一步
xml布局最后一步
代码语言:javascript
复制
 <!-- Required SDK 核心功能-->
        <!-- 可配置android:process参数将PushService放在其他进程中 -->
        <service
            android:name="cn.jpush.android.service.PushService"
            android:enabled="true"
            android:exported="false">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.REGISTER" />
                <action android:name="cn.jpush.android.intent.REPORT" />
                <action android:name="cn.jpush.android.intent.PushService" />
                <action android:name="cn.jpush.android.intent.PUSH_TIME" />
            </intent-filter>
        </service>


        <!-- Required  SDK核心功能-->
        <service
            android:name="cn.jpush.android.service.DownloadService"
            android:enabled="true"
            android:exported="false" >
        </service>

        <!-- Required SDK核心功能-->
        <activity
            android:name="cn.jpush.android.ui.PushActivity"
            android:configChanges="orientation|keyboardHidden"
            android:theme="@android:style/Theme.NoTitleBar"
            android:exported="false">
            <intent-filter>
                <action android:name="cn.jpush.android.ui.PushActivity" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="应用包名" />
            </intent-filter>
        </activity>

清单布局代码都已经罗列在上方了,有需要的同学复制黏贴即可。

第三步

要在程序启动的入口去初始化极光推送

代码语言:javascript
复制
 /**
     * 初始化 推送
     */
    private void InitJpush() {
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);
        JPushInterface.setAlias(this, "添加别名", new TagAliasCallback() {
            @Override
            public void gotResult(int i, String s, Set<String> set) {
                if(0==i){
                    Toast.makeText(MainActivity.this, "Jpush OK", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

//别名添加与否无所谓, 只是一般都要使用这个的, 而且当 0==i的时候表示的就是 设置别名成功。

至此就完成了简单的极光推送, 赶快去跟服务器哥们试一下吧!

注意: 如果要统计的话, 需要在程序的主入口设置如下方法:

代码语言:javascript
复制
 @Override
    protected void onPause() {
        super.onPause();
        JPushInterface.onPause(mContext);
    }

    @Override
    protected void onResume() {
        super.onResume();
        JPushInterface.onResume(mContext);
    }

极光推送接收不到原因分析

为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的android上面不建议线程守护,所以将进程有关的Service都杀掉了,但旧版本还是有这个功能的啊 !真尼玛,后来猜测估计是因为要适配6.0所以低版本的一些代码就删除了,造成低版本的也不行了,接下来分析一下这个问题。

首先我们把Android分为两类机型,一种是原生态的Android系统,比如Nexus,三星等机型,一种是深度定制的(当然不是所有定制机型都存在你说的问题),比如小米,魅族。 我们分开来讨论:

  1. 原生态系统: App不打开,可以收到消息。 这个不管是老版SDK,还是新版本SDK,都是这样的,在三星部分手机上可以。
  2. 深度定制系统(目前有MIUI,魅族): 仍然分两种情况来说明这个问题: 2.1 .1 友盟上来说设备上有集成友盟消息推送的其它App已经打开(要求SDK版本是2.2.0以上),你的App不打开,也能收到消息。 你可以尝试在你的设备上安装我们的Demo,以及你们的App,打开友盟demo,不打开你们的App,给你们的App发通知,是能收到的。 2.1.2 设备上所有集成友盟推送SDK的App都没有打开,那么就收不到消息。

2.2.1 极光的原理也大概是通过服务保持和服务器端的长连接,进行心跳检测,进行消息数据的传递的

  1. 解决方案 仍然分两种情况来说明这个问题: 3.1 目前来说友盟及极光等都没有解决这样的问题,确实在用户不给权限的情况下,很难处理。

3.2 在集成友盟/极光的基础上集成小米推送、华为推送。 3.3 在小米、华为、oppo等手机上如果想让APP杀死后还收到推送的话,只能让用户手动操作,以下是在极光看到的一些步骤:

由于第三方 ROM 的管理软件需要用户手动操作

小米【MIUI】

自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启 通知栏设置:应用默认都是显示通知栏通知,如果关闭,则收到通知也不会提示 网络助手:可以手动禁止已安装的第三方程序访问2G/3G和WIFI的网络和设置以后新安装程序是否允许访问2G/3G和WIFI的网络 MIUI 7 神隐模式: 允许应用进行自定义配置模式,应用在后台保持联网可用,否则应用进入后台时,应用无法正常接收消息。【设置】下电量和性能中【神隐模式】 华为【Emotion】

自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程不会开启,只能手动开启应用 后台应用保护:需要手动把应用加到此列表,否则设备进入睡眠后会自动杀掉应用进程,只有手动开启应用才能恢复运行 通知管理:应用状态有三种:提示、允许、禁止。禁止应用则通知栏不会有任何提醒 魅族【Flyme】

自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启 通知栏推送:关闭应用通知则收到消息不会有任何展示 省电管理: 安全中心里设置省电模式,在【待机耗电管理】中允许应用待机时,保持允许,否则手机休眠或者应用闲置一段时间,无法正常接收消息。 VIVO【Funtouch OS】

内存一键清理:需要将应用加入【白名单】列表,否则系统自带的“一键加速”,会杀掉进程 自启动管理:需要将应用加入“i管家”中的【自启动管理】列表,否则重启手机后进程不会自启。但强制手动杀进程,即使加了这个列表中,后续进程也无法自启动。 OPPO【ColorOS】

冻结应用管理:需要将应用加入纯净后台,否则锁屏状态下无法及时收到消息 自启动管理:将应用加入【自启动管理】列表的同时,还需要到设置-应用程序-正在运行里锁定应用进程,否则杀进程或者开机后进程不会开启,只能手动开启应用

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 极光推送的简单实现方法
    • 第一步
      • 第二步
      • 第三步
        • 极光推送接收不到原因分析
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档