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 极光推送

  • 2016年02月19日 09:02
  • 2.14MB
  • 下载

极光推送Android IOS SDK V2.1.9

  • 2016年10月06日 16:34
  • 7.94MB
  • 下载

详解极光推送的 4 种消息形式—— Android 篇

点击打开链接 极光推送是为 App 提供第三方推送服务的平台之一,它提供四种消息形式:通知,自定义消息,富媒体和本地通知。笔者将基于官方说明与个人理解来谈一下这四种消息。本篇为 Androi...

android 极光推送demo

  • 2017年05月23日 11:40
  • 4.52MB
  • 下载

Android客户端极光推送移植Demo程序

  • 2015年05月03日 17:15
  • 2.46MB
  • 下载

Android 极光推送获取自定义消息

转至:http://www.sjsjw.com/100/009151MYM003117/ 参考官方Android SDK 教程完成激光推送的基本配置区别通知和自定义消...

Android极光推送之Hello World

  • 2016年06月17日 21:43
  • 4.21MB
  • 下载

android/java/php第三方库极光推送

  • 2015年10月29日 19:03
  • 11.86MB
  • 下载

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

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

极光推送C#实例(含android例子)

  • 2017年01月25日 21:43
  • 1.25MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android极光推送
举报原因:
原因补充:

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