Ionic3 Cordova Android 6.x集成最新极光华为/小米厂商点击通知跳转实现

news/2024/11/7 3:33:28/

Ionic3 Cordova Android 6.x集成最新极光华为/小米厂商点击通知跳转实现

  • 一、添加跳转处理页面OpenClickActivity
  • 二、MainActivity获取传递参数
  • 三、JPushPlugin.java提供Java调用Js接口
  • 四、JPushPlugin.js提供接口供JPushPlugin.java调用
  • 五、在web项目app.page.ts中添加监听供Java传递数据
  • 六、推送消息,验证结果

一、添加跳转处理页面OpenClickActivity

  1. 在应用包名下创建一个OpenClickActivity类
    在这里插入图片描述
public class OpenClickActivity extends Activity {private static final String TAG = "JIGUANG";public static final String THIRD_PUSH_DATA = "THIRD_PUSH_DATA";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView mTextView = new TextView(this);setContentView(mTextView);handleOpenClick();}/*** 处理点击事件,当前启动配置的Activity都是使用* Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK* 方式启动,只需要在onCreate中调用此方法进行处理*/private void handleOpenClick() {Log.d(TAG, "用户点击打开了通知");String data = null;//获取华为平台附带的jpush信息if (getIntent().getData() != null) {data = getIntent().getData().toString();}//获取fcm/oppo/小米/vivo 平台附带的jpush信息if (TextUtils.isEmpty(data) && getIntent().getExtras() != null) {data = getIntent().getExtras().getString("JMessageExtra");}//将获取到的参数传到MainActivityIntent intent = new Intent(this, MainActivity.class);intent.putExtra(THIRD_PUSH_DATA, data);Log.d(TAG, "handleOpenClick: "+ data);startActivity(intent);finish();}
}
  1. 在AndroidManifest.xml中注册该类
    在这里插入图片描述
<activity android:exported="true" android:name=".OpenClickActivity"><intent-filter><action android:name="pub.kilo.thirdpush.open" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>

二、MainActivity获取传递参数

public class MainActivity extends CordovaActivity {/*** 应用第一次启动时*/@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Bundle extras = getIntent().getExtras();if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {moveTaskToBack(true);}// Set by <content src="index.html" /> in config.xmlloadUrl(launchUrl);// 获取到OpenClickActivity传递过来的参数,并且传给Cordova Html页面jpushThirdPushPlugin(extras, 2200L);}/*** 应用在线时,再次获取intent时*/@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);jpushThirdPushPlugin(intent.getExtras(), 0L);}/*** 极光厂商通道推送* @param extras*/private void jpushThirdPushPlugin(final Bundle extras, final Long timer) {new Thread() {@Overridepublic void run() {super.run();try {Thread.sleep(timer);//休眠3秒,// 在onCreate时避免webview未加载完html,} catch (InterruptedException e) {e.printStackTrace();}//获取到OpenClickActivity传递过来的参数,并且传给Cordova Html页面if (extras == null) return;String data = extras.getString(OpenClickActivity.THIRD_PUSH_DATA);if (!TextUtils.isEmpty(data)) {JPushPlugin.onThirdPushOpened(data);}}}.start();}
}

三、JPushPlugin.java提供Java调用Js接口

在这里插入图片描述

public static void onThirdPushOpened(String data) {if (instance == null) {return;}String format = "window.plugins.jPushPlugin.openThirdPushNotificationInAndroidCallback(%s);";final String js = String.format(format, data);cordovaActivity.runOnUiThread(new Runnable() {@Overridepublic void run() {instance.webView.loadUrl("javascript:" + js);}});}

四、JPushPlugin.js提供接口供JPushPlugin.java调用

打开路径app/src/main/assets/www/plugins/jpush-phonegap-plugin.www下的JPushPlugin.js,添加如下代码:
在这里插入图片描述

JPushPlugin.prototype.openThirdPushNotification = {};JPushPlugin.prototype.openThirdPushNotificationInAndroidCallback = function(data) {data = JSON.stringify(data);this.openThirdPushNotification = JSON.parse(data);cordova.fireDocumentEvent("jpush.openThirdPushNotification", this.openThirdPushNotification);
};

建议直接修改插件中的js代码,那么不用每次打包前进行一次修改。
插件包js文件路径/plugins/jpush-phonegap-plugin/www/JPushPlugin.js

五、在web项目app.page.ts中添加监听供Java传递数据

export class AppPage {constructor(private platform: Platform,){platform.ready().then(() => {// 极光厂商商通道通知点击监听document.addEventListener("jpush.openThirdPushNotification",(event: any) => {if (this.platform.is('android')) {let extras = event['n_extras']// 下面写你的业务代码}	          },false);}}
}

六、推送消息,验证结果

推送接口:https://api.jpush.cn/v3/push
body:

{"platform": "android","audience": {"alias": "all"},"notification": {        "android": {"title": "资源申请","alert": "IT设备申请-入职台式电脑申请!","extras": { // 自定义参数"nav": "82","params": "9WJIP3W2U8UFTF1MS031GJQFNR8KL5E4"},// 具体的包名"uri_activity": "xx.xx.xxxx.OpenClickActivity"}},"options": {"third_party_channel": {"huawei":{"importance":"NORMAL","distribution": "first_ospush" // 推送优先走厂商通道下发,无效走极光通道下发},"xiaomi":{"importance":"NORMAL","distribution": "first_ospush","channel_id": "high_system"}           }}
}

http://www.ppmy.cn/news/232209.html

相关文章

华为手机怎么刷android系统,怎样刷入安卓原生系统 在手机系统更新这件事上,小米华为和OPPOvivo谁更有良心...

原标题:在手机系统更新这件事上,小米华为和OPPOvivo谁更有良心? 用国产手机的朋友可能都有一种感受,对于系统升级这块,有的厂商很积极,但有的厂商却非常的不积极。比如小米,华为,一加等在系统升级方面就很快。而OPPO和vivo在系统升级这块就比较慢。而有意思的是,前者因…

小米8探索版android版本,小米8透明探索版三个月使用体验

小米8透明探索版三个月使用体验 2019-01-21 14:02:18 2点赞 2收藏 5评论 购买理由 在张大妈上面潜水了两三年了&#xff0c;薅到很多羊毛&#xff0c;这是第一次发声&#xff0c;想了半天决定写写18年九月份入手的小米8透明探索版吧。 之前一直是使用苹果机&#xff0c;从iPhon…

Ionic3 Cordova Android 6.x集成最新极光华为/小米厂商通道推送

Ionic3 Cordova Android 6.x集成最新极光华为/小米厂商推送 前置一、集成华为厂商推送1.在开放平台创建并配置应用2.在安卓项目配置SDK2.1. 添加配置文件2.2. 配置build.gradle集成sdk和插件2.2.1. 打开app目录下的build.gradle文件2.2.2. 添加HUAWEI agcp插件以及Maven代码库2…

华为小米等折叠屏适配研究

市面上折叠屏陆续出了几款手机&#xff0c;我们产品也下发了适配折叠屏的需求&#xff0c;以下对折叠屏是撇工作做一个记录&#xff0c;中间也包含网络搜罗资料整理&#xff0c;供大家参考。 一、目前主流折叠屏机型&#xff1a; 厂商 型号折叠分辨率展开分辨率华为HUAWEI Ma…

2021 App上架到 各应用商店(应用宝,华为,vivo,小米,AppStore)

操作目录 一. 需要准备材料1.软件安装包【apk/ipa】2.软件包名/PackageName3. 软著4.营业执照5.软件隐私协议 & 软件用户服务协议6.App图标7.应用截图8. 企业法定代表人身份证正背面9. 电子版权证书10. App简介11. ICP备案号 & 域名 二. 各应用商店网址1. 应用宝2. 小米…

android 小米相册无法获取,适配小米华为手机等拍照后获取不到照片

问题摘要:适配小米华为手机等拍照后获取不到照片 出现场景 普通的相机调用,在 intent 传进去一个路径,然调用这个意图。 在测试机 荣耀 8x 上是没有问题的,能获取到拍的照片。 在小米系统和 华为麦芒4上就不行,路径上就没有照片。 /** * @param file 拍照生成的照片地址 *…

友盟推送集成小米华为通道

在集成友盟推送的时候&#xff0c;小米和华为对后台进程做了诸多限制。若使用一键清理&#xff0c;应用的channel进程被清除&#xff0c;将接收不到推送。为了增加推送的送达率&#xff0c;可选择接入小米托管弹窗功能。通知将由小米系统托管弹出&#xff0c;点击通知栏将跳转到…

小米max2android8,小米Max2和荣耀8哪个好?华为荣耀8与小米Max2区别对比评测

华为荣耀8与小米Max2区别对比评测 荣耀8介绍&#xff1a; 华为荣耀8硬件配置参数&#xff0c;详情如下所示&#xff0c;参数党必看&#xff1a; 荣耀8硬件配置参数 主屏尺寸 5.2英寸19201080像素 424ppi 机身尺寸 147.1x73.8x8.3 mm(156g) CPU型号 海思麒麟950(64位八核) RAM容…