Android接入极光推送

在官网注册后,并下载SDK后,目录如下:
在这里插入图片描述
直接导入将 jiguang、jiguang-demo导入Android Studio中。
然后直接运行。
首先需要现在Application 中注册极光推送

/**
 * 代表整个软件,然后再AndroidManifest.xml里面的Application设置Android:name为这个类
 */
public class BeijingNewsApplication extends Application {

    /**
     * // 在application的onCreate中初始化,所有组件被调用之前执行
     */
    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化极光推送
        JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志
        JPushInterface.init(this); // 初始化 JPush
    }

}

再导入项目的中,需要注意,复制demo中的AndroidManifest.xml中的权限和下面包含在application中的内容

<!-- User defined.  For test only  用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调-->
<!--since 3.3.0 接收JPush相关事件-->
<receiver android:name=".receiver.MyReceiver"
   android:exported="true">
   <intent-filter>
       <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
       <category android:name="${applicationId}"></category>
   </intent-filter>
</receiver>
<!-- 点击通知时,要打开的 activity -->
<activity
   android:name=".activity.NewsDetailActivity"
   android:exported="true">
   <intent-filter>
       <action android:name="android.intent.action.VIEW" />
       <category android:name="android.intent.category.DEFAULT" />
       <action android:name="com.example.jpushdemo.OpenClickActivity" />
   </intent-filter>
</activity>
<!-- since 3.3.0 Required SDK 核心功能-->
<!-- 可配置android:process参数将PushService放在其他进程中 -->
<!--User defined.  For test only 继承自cn.jpush.android.service.JCommonService-->
<service
   android:name=".receiver.PushService"
   android:process=":pushcore"
   android:exported="true">
   <intent-filter>
       <action android:name="cn.jiguang.user.service.action" />
   </intent-filter>
</service>
<!--jpush_config_end-->

注意:需要自己定义一个MyReceiver.java类,参照demo中的可以复制

package com.qykhhr.beijingnews.receiver;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.qykhhr.beijingnews.activity.NewsDetailActivity;
import com.qykhhr.beijingnews.utils.LogUtil;

import cn.jpush.android.api.CmdMessage;
import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.service.JPushMessageReceiver;


public class MyReceiver extends JPushMessageReceiver {
    
    
	private static final String TAG = "PushMessageReceiver";

	@Override
	public void onMessage(Context context, CustomMessage customMessage) {
    
    
		Log.e(TAG, "[onMessage] " + customMessage);
		Intent intent = new Intent("com.jiguang.demo.message");
		intent.putExtra("msg", customMessage.message);
		context.sendBroadcast(intent);
	}

	@Override
	public void onNotifyMessageOpened(Context context, NotificationMessage message) {
    
    
		Log.e(TAG, "[onNotifyMessageOpened] " + message);
//		String url = "https://www.baidu.com";
		try{
    
    
			//打开自定义的Activity
			Intent i = new Intent(context, NewsDetailActivity.class);
			Bundle bundle = new Bundle();
			bundle.putString(JPushInterface.EXTRA_NOTIFICATION_TITLE,message.notificationTitle);
			bundle.putString(JPushInterface.EXTRA_ALERT,message.notificationContent);

//			JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));
//			url = json.optString("url");
//
//			LogUtil.e("推送的url = " + url);

			String extraAlert = JPushInterface.EXTRA_ALERT;
			LogUtil.e("推送的extraAlert = " + extraAlert);


			i.putExtras(bundle);
//			i.putExtra("url",url);

			i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
			context.startActivity(i);
		}catch (Throwable throwable){
    
    

		}
	}

	@Override
	public void onMultiActionClicked(Context context, Intent intent) {
    
    
		Log.e(TAG, "[onMultiActionClicked] 用户点击了通知栏按钮");
		String nActionExtra = intent.getExtras().getString(JPushInterface.EXTRA_NOTIFICATION_ACTION_EXTRA);

		//开发者根据不同 Action 携带的 extra 字段来分配不同的动作。
		if (nActionExtra == null) {
    
    
			Log.d(TAG, "ACTION_NOTIFICATION_CLICK_ACTION nActionExtra is null");
			return;
		}



		if (nActionExtra.equals("my_extra1")) {
    
    
			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮一");
		} else if (nActionExtra.equals("my_extra2")) {
    
    
			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮二");
		} else if (nActionExtra.equals("my_extra3")) {
    
    
			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮三");
		} else {
    
    
			Log.e(TAG, "[onMultiActionClicked] 用户点击通知栏按钮未定义");
		}
	}

	@Override
	public void onNotifyMessageArrived(Context context, NotificationMessage message) {
    
    
		Log.e(TAG, "[onNotifyMessageArrived] " + message);
	}

	@Override
	public void onNotifyMessageDismiss(Context context, NotificationMessage message) {
    
    
		Log.e(TAG, "[onNotifyMessageDismiss] " + message);
	}

	@Override
	public void onRegister(Context context, String registrationId) {
    
    
		Log.e(TAG, "[onRegister] " + registrationId);
		Intent intent = new Intent("com.jiguang.demo.register");
		context.sendBroadcast(intent);
	}

	@Override
	public void onConnected(Context context, boolean isConnected) {
    
    
		Log.e(TAG, "[onConnected] " + isConnected);
	}

	@Override
	public void onCommandResult(Context context, CmdMessage cmdMessage) {
    
    
		Log.e(TAG, "[onCommandResult] " + cmdMessage);
	}

	@Override
	public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
    
    
//		TagAliasOperatorHelper.getInstance().onTagOperatorResult(context,jPushMessage);
		super.onTagOperatorResult(context, jPushMessage);
	}

	@Override
	public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
    
    
//		TagAliasOperatorHelper.getInstance().onCheckTagOperatorResult(context,jPushMessage);
		super.onCheckTagOperatorResult(context, jPushMessage);
	}

	@Override
	public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
    
    
//		TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context,jPushMessage);
		super.onAliasOperatorResult(context, jPushMessage);
	}

	@Override
	public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
    
    
//		TagAliasOperatorHelper.getInstance().onMobileNumberOperatorResult(context,jPushMessage);
		super.onMobileNumberOperatorResult(context, jPushMessage);
	}

	@Override
	public void onNotificationSettingsCheck(Context context, boolean isOn, int source) {
    
    
		super.onNotificationSettingsCheck(context, isOn, source);
		Log.e(TAG, "[onNotificationSettingsCheck] isOn:" + isOn + ",source:" + source);
	}

}

再新建一个PushService.java

package com.qykhhr.beijingnews.receiver;


import cn.jpush.android.service.JCommonService;

public class PushService extends JCommonService {

}

应该就能运行了,但是只能固定跳到一个Activity中。

猜你喜欢

转载自blog.csdn.net/qq_46070108/article/details/120660702