Android集成JPush极光推送

推送原理

参考网址:https://blog.csdn.net/huangli1466384630/article/details/79889473

SDK下载

https://docs.jiguang.cn/jpush/resources/

jpush-android-3.xx-release.zip集成压缩包内容

Android集成JPush极光推送_第1张图片

手动集成

  • 解压缩jpush-android--3.xx-release.zip集成压缩包。
  • 复制libs / jcore-android-1.xxjar到工程libs /目录下。
  • 复制libs / jpush-android-3.xxjar到工程libs /目录下。
  • 复制libs /(cpu-type)/libjcore1xy.so到你的工程中存放对应cpu类型的目录下。
  • 复制res /中drawable-hdpi,layout,values文件夹中的资源文件到你的工程中res /对应同名的目录下。

说明1:若没有res / drawable-xxxx / jpush_notification_icon这个资源默认使用应用图标作为通知图标,在5.0以上系统将应用图标作为状态栏图标可能显示不正常,用户可定义没有阴影和渐变色的图标替换这个文件,文件名不要变。

  • module的gradle配置:
dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    ...
}

配置AndroidManifest.xml




    
    

    
    
    
    
    
    
    
    
    
    
    

    
     
    
    
    
    
    
    
    
    
        
            
                

                
            
        
        
        
        

        
        
        

        
        
            
                
                
                
            
        

        
        
        
            
                
                
                
                
            
        
        
        

        
        
        
            
                
                
            

        
        
        
        
        
            
                   
                
            
            
                
                
            
            
            
                
                

                
            
        

        
        

        
        
            
                 
                 
                 
                 
                
                
            
        

        
        
         
    

MainActivity中初始化SDK

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        JPushInterface.setDebugMode(true);//设置调试模式
        JPushInterface.init(getApplicationContext());//init初始化SDK

        initView();
        //获取RegistrationID唯一标识
        String rid = JPushInterface.getRegistrationID(getApplicationContext());
        ...
    }

自定义广播接收器

package com.tuobang.yxaqgl;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;
import cn.jpush.android.api.JPushInterface;

/**
 * 自定义接收器
 * 
 * 如果不定义这个 Receiver,则:
 * 1) 默认用户会打开主界面
 * 2) 接收不到自定义消息
 */
public class MyReceiver extends BroadcastReceiver {
    private static final String TAG = "JIGUANG-Example";

    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            Bundle bundle = intent.getExtras();
            Logger.d(TAG, "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));

            if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
                String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
                Logger.d(TAG, "[MyReceiver] 接收Registration Id : " + regId);
                //send the Registration Id to your server...

            } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
                Logger.d(TAG, "[MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));

            } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
                Logger.d(TAG, "[MyReceiver] 接收到推送下来的通知");
                int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
                Logger.d(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);

            } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
                Logger.d(TAG, "[MyReceiver] 用户点击打开了通知");
                //在这里做点击事件的处理
                // 打开MainActivity,应用在后台时,会唤起至前台
                Intent i = new Intent(context, MainActivity.class);
                i.putExtras(bundle);
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i)

            } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {
                Logger.d(TAG, "[MyReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));
                //在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码,比如打开新的Activity, 打开一个网页等..

            } else if(JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {
                boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);
                Logger.w(TAG, "[MyReceiver]" + intent.getAction() +" connected state change to "+connected);
            } else {
                Logger.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction());
            }
        } catch (Exception e){

        }

    }

    // 打印所有的 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 if(key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)){
                sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));
            } else if (key.equals(JPushInterface.EXTRA_EXTRA)) {
                if (TextUtils.isEmpty(bundle.getString(JPushInterface.EXTRA_EXTRA))) {
                    Logger.i(TAG, "This message has no Extra data");
                    continue;
                }

                try {
                    JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));
                    Iterator it =  json.keys();

                    while (it.hasNext()) {
                        String myKey = it.next();
                        sb.append("\nkey:" + key + ", value: [" +
                                myKey + " - " +json.optString(myKey) + "]");
                    }
                } catch (JSONException e) {
                    Logger.e(TAG, "Get message extra JSON error!");
                }

            } else {
                sb.append("\nkey:" + key + ", value:" + bundle.get(key));
            }
        }
        return sb.toString();
    }
}

测试

Android集成JPush极光推送_第2张图片

Android集成JPush极光推送_第3张图片

下一篇:JAVA集成JPush(https://www.cnblogs.com/maggieq8324/p/11414823.html)

你可能感兴趣的:(Android集成JPush极光推送)