安卓极光推送集成

1:登录极光推送官网 https://www.jiguang.cn/(未注册的先注册)。

2:登录后点用户到极光开发者服务 https://www.jiguang.cn/dev/#/app/list#dev,点击创建应用。(注意包名要和项目包名一致)


3点击推送设置下载demo  https://www.jiguang.cn/dev/#/app/c113c182cc5e60a1a78bfef1/pushEdit(下载解压)

4:把解压的包里面的libs内容复制到项目的libs里面(注意需要把里面的两个jar文件添加到mode的build.gradle里面)

//libs里面的


//添加后build里面会显示


5:把res里面的drawable文件和layout文件复制到项目里面,注意values里面的文件建议打开文件,把文件里面的内容复制到对应的文件里面(不要直接覆盖)。

6:在mode的build.gradle里面的Android花括号里面添加

//极光推送-----------------
sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

//例如

注意 applicationId "com.jpeng.ssc"的对应包名

android {
    compileSdkVersion 26
    buildToolsVersion "27.0.0"

    //极光推送-----------------
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
    //--------------------------
    defaultConfig {
        applicationId "com.jpeng.ssc"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

7:把src里面的文件复制到项目的src里面(建议建个文件夹放推送的文件)

//MainActivity可以不复制;如果有自己的Application可以不复制,(但是需要把注册的代码复制到自己的)


注意:MainActivity添加代码

//极光推送------------
public static boolean isForeground = false;

@Override
protected void onResume() {
    isForeground = true;
    super.onResume();
}


@Override
protected void onPause() {
    isForeground = false;
    super.onPause();
}
//--------------------

8:在MyReceive里面吧

//send msg to MainActivity
public static final String MESSAGE_RECEIVED_ACTION = "com.example.jpushdemo.MESSAGE_RECEIVED_ACTION";
public static final String KEY_EXTRAS = "extras";
public static final String KEY_MESSAGE = "message";

private void processCustomMessage(Context context, Bundle bundle) {
    if (MainActivity.isForeground) {
        String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);
        String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
        Intent msgIntent = new Intent(MESSAGE_RECEIVED_ACTION);
        msgIntent.putExtra(KEY_MESSAGE, message);
        if (!ExampleUtil.isEmpty(extras)) {
            try {
                JSONObject extraJson = new JSONObject(extras);
                if (extraJson.length() > 0) {
                    msgIntent.putExtra(KEY_EXTRAS, extras);
                }
            } catch (JSONException e) {

            }

        }
        LocalBroadcastManager.getInstance(context).sendBroadcast(msgIntent);
    }
}
//注意要复制下载demo里面的而不是复制我上面的(我上面的包名不一致)
9:TestActivity是 点击消息后,跳转到的页面(可以自定义需求的页面效果)

10:AndroidManifest里面

把demo里面AndroidManifest的权限和application里面注册的activity复制(注意复制后的activity的name会报错,修改下路径就可以了)

例如:

<!-- Required 权限/-->
<permission
    android:name="com.jpeng.ssc.permission.JPUSH_MESSAGE"
    android:protectionLevel="signature" />

<!-- Required -->
<uses-permission android:name="com.jpeng.ssc.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" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!-- Optional. Required for location feature -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<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" />
<uses-permission android:name="android.permission.GET_TASKS" />
<!-- Required 权限/-->


<application
    android:name="MyApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name="com.jpeng.ssc.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    //《极光推送
    <!-- For test only 测试高级功能 -->
    <activity
        android:name="jpush.PushSetActivity"
        android:label="@string/app_name" />
    <!-- For test only 测试设置 -->
    <activity
        android:name="jpush.SettingActivity"
        android:label="@string/app_name" />

    <!-- For test only 测试状态通知栏,需要打开的Activity -->
    <activity
        android:name="jpush.TestActivity"
        android:exported="false">
        <intent-filter>
            <action android:name="jpush.testAction" />
            <category android:name="jpush.testCategory" />
        </intent-filter>
    </activity>

    <!-- Rich push 核心功能 since 2.0.6-->
    <activity
        android:name="cn.jpush.android.ui.PopWinActivity"
        android:exported="false"
        android:theme="@style/MyDialogStyle" />

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

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="com.jpeng.ssc" />
        </intent-filter>
    </activity>

    <!-- Required SDK 核心功能-->
    <!-- 可配置android:process参数将PushService放在其他进程中 -->
    <service
        android:name="cn.jpush.android.service.PushService"
        android:exported="false"
        android:process=":mult">
        <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 3.0.9 Required SDK 核心功能-->
    <provider
        android:name="cn.jpush.android.service.DataProvider"
        android:authorities="com.jpeng.ssc.DataProvider"
        android:exported="false" />

    <!-- 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="com.jpeng.ssc" />
        </intent-filter>

    </service>
    <!-- since 3.1.0 Required SDK 核心功能-->
    <provider
        android:name="cn.jpush.android.service.DownloadProvider"
        android:authorities="com.jpeng.ssc.DownloadProvider"
        android:exported="true" />
    <!-- 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="com.jpeng.ssc" />
        </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核心功能-->
    <receiver
        android:name="cn.jpush.android.service.AlarmReceiver"
        android:exported="false" />


    <!-- User defined.  For test only  用户自定义的广播接收器-->
    <receiver
        android:name="jpush.MyReceiver"
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <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  用户接收SDK通知栏信息的intent-->
            <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required  用户打开自定义通知栏的intent-->
            <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->
            <category android:name="com.jpeng.ssc" />
        </intent-filter>
    </receiver>

    // User defined. For test only 用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调
    <receiver android:name="jpush.MyJPushMessageReceiver">
        <intent-filter>
            <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
            <category android:name="com.jpeng.ssc" />
        </intent-filter>
    </receiver>
    // 注册的key
    <meta-data
        android:name="JPUSH_CHANNEL"
        android:value="developer-default" />
    <meta-data
        android:name="JPUSH_APPKEY"
        android:value="13e2240e228518983188dd00" /> <!--  </>值来自开发者平台取得的AppKey-->
    //极光推送》

</application>


10:运行项目,登录极光账户发送通知测试是否接受到信息。



注意:如果想修改接受信息时显示的图标可以在  复制需要的图片到文件夹drawable-hdpi里面名字必须为jpush_notification_icon

猜你喜欢

转载自blog.csdn.net/qq_36237165/article/details/80196107