android极光推送

原创 2016年08月30日 10:37:00

看完这篇文章可以干什么
1.集成推送环境;
2.获取推送的内容;
3.自定义样式。

正文

一.集成环境

1.去极光官网下载so文件以及jar包,然后导入项目。
注意:如果导入到app目录下的libs文件下,那么需要在build.gradle里面添加:

    sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
        }
    }

2.配置AndroidManifest文件
如果使用android studio, 可在AndroidManifest中引用applicationId的值,在build.gradle配置中 defaultConfig节点下配置,如:

defaultConfig {
      applicationId "cn.jpush.example" // <--您应用的包名
      ……
 }

AndroidManifest示例:

 <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="您应用的包名"
        android:versionCode="216"
        android:versionName="2.1.6"
    >
        <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" />

        <!-- Required -->
        <permission 
            android:name="您应用的包名.permission.JPUSH_MESSAGE"  
            android:protectionLevel="signature" />

        <!-- Required -->
        <uses-permission android:name="您应用的包名.permission.JPUSH_MESSAGE" />
        <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.VIBRATE" />
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

        <!-- Optional. Required for location feature -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:name="Your Application">

            <!-- Required SDK 核心功能-->
            <!-- option since 2.0.5 可配置PushService,DaemonService,PushReceiver,AlarmReceiver的android:process参数 将JPush相关组件设置为一个独立进程 -->
            <!-- 如:android:process=":remote" -->
            <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>

            <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
            <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
             <service
                 android:name="cn.jpush.android.service.DaemonService"
                 android:enabled="true"
                 android:exported="true">
                 <intent-filter >
                     <action android:name="cn.jpush.android.intent.DaemonService" />
                     <category android:name="您应用的包名"/>
                 </intent-filter>
             </service>

            <!-- Required -->
            <receiver
                android:name="cn.jpush.android.service.PushReceiver"
                android:enabled="true" >
                <intent-filter android:priority="1000"> 
                    <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> 
                    <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>

             <!-- Required SDK核心功能-->
            <activity
                android:name="cn.jpush.android.ui.PushActivity"
                android:configChanges="orientation|keyboardHidden"
                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>

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

            <!-- User defined. 用户自定义的广播接收器-->
            <receiver
                android:name="您自己定义的Receiver"
                android:enabled="true">
                <intent-filter>
                     <!--Required 用户注册SDK的intent-->
                     <action android:name="cn.jpush.android.intent.REGISTRATION" /> 
                     <!--Required 用户接收SDK消息的intent--> 
                     <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> 
                     <!--Required 用户接收SDK通知栏信息的intent-->
                     <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> 
                     <!--Required 用户打开自定义通知栏的intent-->
                     <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> 
                     <!--Optional 用户接受Rich Push Javascript 回调函数的intent-->
                     <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" /> 
                     <!-- 接收网络变化 连接/断开 since 1.6.3 -->
                     <action android:name="cn.jpush.android.intent.CONNECTION" />
                     <category android:name="您应用的包名" />
                 </intent-filter>
             </receiver>

            <!-- Required. For publish channel feature -->
            <!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。-->
            <!-- 例如: -->
            <!-- 发到 Google Play 的APK可以设置为 google-play; -->
            <!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->
            <!-- 目前这个渠道统计功能的报表还未开放。-->
            <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
            <!-- Required. AppKey copied from Portal -->
            <meta-data android:name="JPUSH_APPKEY" android:value="Your AppKey"/> 
        </application>
    </manifest>

二.获取推送的内容

初始化

JPushInterface.init(getApplicationContext());

注意:init方法只需要在应用程序启动时调用一次就可以了。

停止服务

JPushInterface.stopPush(getApplicationContext());


恢复服务

JPushInterface.resumePush(getApplicationContext());



接收推送的消息
在Receiver里面:

接收自定义消息内容
Bundle bundle = intent.getExtras();
String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
接收自定义消息和接收通知的附加字段
Bundle bundle = intent.getExtras();
String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
接收发送通知里面的内容
Bundle bundle = intent.getExtras();
String content = bundle.getString(JPushInterface.EXTRA_ALERT);
接收发送通知里面的标题
Bundle bundle = intent.getExtras();
String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);
用户点击了通知栏的事件操作
if(JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
            // 在这里可以自己写代码去定义用户点击后的行为
            Intent i = new Intent(context, TestActivity.class);  //自定义打开的界面
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//一定要加这行代码
            context.startActivity(i);
        }

使用以下任意方法都可以实现部分用户推送

设置别名(alias):

public static void setAlias(Context context, String alias, TagAliasCallback callback)

设置标签(tag)

public static void setTags(Context context, Set<String> tags, TagAliasCallback callback)

获取RegistrationID

JPushInterface.getRegistrationID(this);

三.自定义通知栏样式

CustomPushNotificationBuilder builder = new
                CustomPushNotificationBuilder(MainActivity.this,
                R.layout.xiaoming,//自定义Layout
                R.id.icon,//自定义Layout摆放的位置
                R.id.title,
                R.id.text);
        // 指定定制的 Notification Layout
        builder.statusBarDrawable = R.mipmap.ec;
        // 指定最顶层状态栏小图标
        builder.layoutIconDrawable = R.mipmap.ec;
        // 指定下拉状态栏时显示的通知图标
        JPushInterface.setPushNotificationBuilder(2, builder);

就先写到这里,以后有用到更多功能时再添加

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 中使用极光推送消息详细介绍(一)

简介在Android开发中,服务器有时候会向客户端推送一些用户可能感兴趣的消息,比如:淘宝,网易新闻,美团等都会向我们客户端推送消息.今天我就介绍一个第三方免费推送消息的服务:极光推送官方资源官方文档...
  • Greathfs
  • Greathfs
  • 2016年07月31日 01:17
  • 35388

简述Android中极光推送的运用步骤

极光推送(JPush)是独立的第三方云推送平台,致力于为全球移动应用开发者提供专业、高效的移动消息推送服务。开发者只需在客户端集成极光推送 SDK,即可轻松地添加Push功能到他的App中。   但是...
  • SuperDHQ
  • SuperDHQ
  • 2016年09月01日 19:15
  • 3147

Android 使用极光推送消息详细介绍之自定义消息

前言上一篇文章,我们详细介绍了下极光推送的使用,不过还是差一点,那就是自定义消息的使用.这一篇,我们将慢慢来熟悉极光推送的自定义消息的使用,附上本人的上一篇文章,有兴趣的可以去看看: http://...
  • Greathfs
  • Greathfs
  • 2016年09月27日 20:00
  • 5244

Android 使用极光推送自定义消息推送效果

极光推送,是一个面向普通开发者开放的,免费的第三方消息推送服务。本篇博客将结合案例介绍极光推送自定义消息的使用方法,利用自定义消息实现项目中特定的消息推送需求。 本案例将实现如图效果: ...
  • zhihui1017
  • zhihui1017
  • 2017年07月12日 10:41
  • 491

使用android studio集成极光推送

用Android studio集成激光推送sdk
  • donghejk
  • donghejk
  • 2016年08月05日 20:46
  • 3178

Android 极光推送集成与使用详解

极光新建应用首先需要有极光账号,在后台新建应用 新建时会要求上传app图标和填写app名字,然后需要完成推送设置 点击推送设置后出现android 与iOS的按钮,点击android后填写...
  • hjw45611
  • hjw45611
  • 2017年08月03日 12:05
  • 1075

Android之极光推送SDK集成和基础功能的实现

Android之极光推送SDK集成和基础功能的实现
  • Android_Cll
  • Android_Cll
  • 2017年02月12日 09:16
  • 14818

Android开发中,极光推送,从账号注册到推送,一步一步实现过程

Android开发中一步一步实现极光推送!
  • xiaopihai1989
  • xiaopihai1989
  • 2017年06月29日 17:24
  • 715

2分钟搞定极光推送(极光推送Android端集成)

转载至:http://m.blog.csdn.net/qq137722697/article/details/52475605一、前言2分钟只是一个虚数哈,不过只要你速度快,两分钟还真是能搞定的哦。在...
  • wzgbgz
  • wzgbgz
  • 2017年12月26日 10:11
  • 81

AndroidStudio 集成极光推送(带源码)

极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。接下在咱们就介绍一下基于 JPush...
  • willhanweijia
  • willhanweijia
  • 2017年03月22日 10:21
  • 702
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android极光推送
举报原因:
原因补充:

(最多只允许输入30个字)