jpush / jpush-phonegap-plugin

JPush's officially supported PhoneGap/Cordova plugin (Android & iOS). 极光推送官方支持的 PhoneGap/Cordova 插件(Android & iOS)。
https://docs.jiguang.cn
MIT License
925 stars 350 forks source link

android 升级cordova 9.0后,极光推送收不到消息 #404

Closed jiwufeiyang closed 5 years ago

jiwufeiyang commented 5 years ago

WARNING: 如果不按照这个表格,我们将无法帮助你,并将忽略你的问题。

你的运行环境

告诉我们你希望达到什么效果。 cordova 没有更新9.0前测试极光推送可以收到信息,代码没有更改,升级cordova 9.0 ,androd sdk 28后就收不到信息,

实际效果

告诉我们实际是什么效果。

try { window.JPush.init(); window.JPush.setDebugMode(true); window.setTimeout(getRegistrationID, 1000);

if (device.platform != "Android") {
    window.JPush.setApplicationIconBadgeNumber(0);
}

} catch (exception) { alert(exception); }

exception 出现 ReferenceError: getRegistrationID is not defined

重现步骤

bindEvents : function() { document.addEventListener('deviceready', this.onDeviceReady, false); // 极光推送初始化 document.addEventListener("jpush.openNotification", this.onOpenNotification, false); document.addEventListener("jpush.receiveNotification", this.onReceiveNotification, false); document.addEventListener("jpush.receiveMessage", this.onReceiveMessage, false); },

onDeviceReady : function() { // 极光推送 insert.initiateUI(); },

/**

// 打开推送消息 onOpenNotification : function(event) { try { var alertContent; if (device.platform == "Android") { alertContent = event.alert; } else { alertContent = event.aps.alert; }

// 打开跳转到页面
var search_url = './template.html?controller=my&action=news&';
window.location = search_url;
} catch (exception) {
    alert("JPushPlugin:onOpenNotification" + exception);
}

},

// 接收消息 onReceiveNotification : function(event) { try { var alertContent; if (device.platform == "Android") { alertContent = event.alert; } else { alertContent = event.aps.alert; } alert("onReceiveNotification =" + alertContent); } catch (exception) { alert(exception) } },

onReceiveMessage : function(event) { try { var message; if (device.platform == "Android") { message = event.message; } else { message = event.content; } alert("onReceiveMessage = " + message); } catch (exception) { alert("JPushPlugin:onReceiveMessage-->" + exception); } },

// 初始化 initiateUI : function() { window.JPush.setDebugMode(true); try { window.JPush.init(); window.JPush.setDebugMode(true); window.setTimeout(getRegistrationID, 1000);

    if (device.platform != "Android") {
        window.JPush.setApplicationIconBadgeNumber(0);
    }
} catch (exception) {
    alert("exception = " + exception);
}

},

背景

你尝试做过些什么? 对比过后台的appid没有错,cordoa 8.0没有问题

Debug logs

包括 Android 或 iOS 的日志:

130|shell@hermes:/ $ logcat | grep "tag"
D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="ActivityManager-Launch", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncManagerHandleSyncAlarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncManagerHandleSyncAlarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="MicroMsg.Alarm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="MicroMsg.Alarm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="DHCP", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="DHCP_WAKELOCK", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="DHCP", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="DHCP_WAKELOCK", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockChanging: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncManagerHandleSyncAlarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncManagerHandleSyncAlarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockChanging: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncManagerHandleSyncAlarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncManagerHandleSyncAlarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="SyncLoopWakeLock", packageName=android, ownerUid=1000, ownerPid=755, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10911} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10911} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="MicroMsg.Alarm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="MicroMsg.Alarm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="PlatformComm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1, tag="MicroMsg.Alarm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{10142} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1, tag="MicroMsg.Alarm", packageName=com.tencent.mm, ownerUid=10142, ownerPid=5322, workSource=null D/BatteryService( 755): mBatteryVoltage=4146, batteryLevel=50 D/PowerManagerNotifier( 755): onWakeLockAcquired: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/PowerManagerNotifier( 755): onWakeLockReleased: flags=1073741825, tag="alarm", packageName=android, ownerUid=1000, ownerPid=755, workSource=WorkSource{1000} D/BatteryService( 755): mBatteryVoltage=4154, batteryLevel=50 D/BatteryService( 755): mBatteryVoltage=4158, batteryLevel=50 D/BatteryService( 755): mBatteryVoltage=4155, batteryLevel=50

jiwufeiyang commented 5 years ago

希望大神可以解决cordvoa9.0的问题,我在另外的电脑用cordova 8.0上运行同样的代码,可以收到极光推送信息,对比下,可以接收极光信息时一开始会调用当前地理位置请求权限!

jiwufeiyang commented 5 years ago

@huangminlinux @JoshLipan大神可以帮我看一下吗?谢谢

Lris12J commented 5 years ago

你是在升级 cordova 9.0 后取不到 registrationID 值吗?你上述日志里面没有看到jiguang 相关的信息,初始化的都没有,监听并获取一下 registrationID 值 https://github.com/jpush/jpush-phonegap-plugin/blob/master/doc/Common_detail_api.md#jpushreceiveregistrationid https://github.com/jpush/jpush-phonegap-plugin/blob/master/doc/Common_detail_api.md#getregistrationid

jiwufeiyang commented 5 years ago

你好,刚刚我在cordova9.0 window.JPush.init();后面调用 window.JPush.getRegistrationID(function(rId) {alert("JPushPlugin:registrationID is " + rId)}); 返回空字符串,目前我在另外一台电脑上用回cordova8.0使用是没有问题的。

Lris12J commented 5 years ago

具体需要查看是你获取的过早导致没有取到还是什么情况,看下极光初始化的日志,如果说集成失败了,会有详细的日志说明

jiwufeiyang commented 5 years ago

你好,我通过adb devices命令连接的手机筛选了jpush日志如下 adb -s GY4DGIK799999999 shell shell@hermes:/ $ logcat | grep "jpush" V/ActivityManager( 763): Broadcast: Intent { flg=0x114 cmp=com.id.app.car/cn.jpush.android.service.AlarmReceiver (has extras) } ordered=true userid=0 callerApp=null D/ActivityThread(16856): BDC-Calling onReceive: intent=Intent { flg=0x114 cmp=com.id.app.car/cn.jpush.android.service.AlarmReceiver (has extras) }, receiver=cn.jpush.android.service.AlarmReceiver@6bf3188

jiwufeiyang commented 5 years ago

130|shell@hermes:/ $ logcat | grep "push"
D/ActivityThread(17866): SVC-Creating service: CreateServiceData{token=android.os.BinderProxy@1601e919 className=com.miui.cloudservice.push.MicloudPushService packageName=com.miui.cloudservice intent=null} D/ActivityThread(17866): SVC-Creating service: CreateServiceData{token=android.os.BinderProxy@2653b85a className=com.xiaomi.mipush.sdk.PushMessageHandler packageName=com.miui.cloudservice intent=null} D/ActivityThread(17866): SVC-Destroying service: com.miui.cloudservice.push.MicloudPushService@2ec1528c V/ActivityManager( 763): Broadcast: Intent { act=com.xiaomi.mipush.RECEIVE_MESSAGE flg=0x10 pkg=com.miui.cloudservice (has extras) } ordered=false userid=0 callerApp=ProcessRecord{1fc584c0 1125:com.xiaomi.xmsf/u0a83} D/ActivityThread(17866): BDC-Calling onReceive: intent=Intent { act=com.xiaomi.mipush.RECEIVE_MESSAGE flg=0x10 pkg=com.miui.cloudservice cmp=com.miui.cloudservice/.push.MiPushMessageReceiver (has extras) }, receiver=com.miui.cloudservice.push.MiPushMessageReceiver@1730f8b2 D/ActivityThread(17866): SVC-Creating service: CreateServiceData{token=android.os.BinderProxy@174c5003 className=com.xiaomi.mipush.sdk.MessageHandleService packageName=com.miui.cloudservice intent=null} D/ActivityThread(17866): SVC-Destroying service: com.xiaomi.mipush.sdk.MessageHandleService@12baec0a D/ActivityThread(17866): SVC-Destroying service: com.xiaomi.mipush.sdk.PushMessageHandler@36d1a8b

Lris12J commented 5 years ago

抓取 Android 原生 log 命令:adb logcat -v time ->a.log ctrl+c 结束抓取

jiwufeiyang commented 5 years ago

感谢,a.log 内容很多我把jiguang相关的筛选下来: 06-18 15:42:25.539 W/JIGUANG-JCore(22523): [JCoreGlobal] JCore init code = 8 06-18 15:42:33.131 D/JIGUANG-JCore(23179): [JCoreGlobal] manifest:channel - developer-default 06-18 15:42:33.147 D/JIGUANG-JCore(23179): [JCoreGlobal] metadata: appKey - 130b8b10713fc3b50b14332d 06-18 15:42:33.147 D/JIGUANG-JCore(23179): [AndroidUtil] action:checkValidManifest

06-18 15:42:33.150 W/JIGUANG-JCore(23179): [AndroidUtil] We recommend DataProvider's process same as PushService 06-18 15:42:33.153 D/JIGUANG-JCore(23179): [JCoreServiceUtils] set Push/Alarm Receiver enabled

06-18 15:42:33.163 W/JIGUANG-JCore(23179): [AndroidUtil] hasPermissionDefined error:com.chezixiang.app.car.permission.JPUSH_MESSAGE 06-18 15:42:33.163 E/JIGUANG-JCore(23179): [AndroidUtil] The permission should be defined - com.chezixiang.app.car.permission.JPUSH_MESSAGE 06-18 15:42:33.164 W/JIGUANG-JCore(23179): [JCoreGlobal] JCore init code = 8

06-18 15:42:37.053 D/JIGUANG-JPush(23179): [JPushInterface] action:init - sdkVersion:3.2.0, buildId:445 06-18 15:42:39.593 W/JIGUANG-JCore(23179): [JCoreGlobal] JCore init code = 8

Lris12J commented 5 years ago

The permission should be defined - com.chezixiang.app.car.permission.JPUSH_MESSAGE 根据日志说明检查你的 Androidmanifest 配置 https://docs.jiguang.cn/jpush/client/Android/android_faq/#the-permission-should-be-defined

jiwufeiyang commented 5 years ago

@Lris12J 您好,前段时间比较忙没有修改,我已经 在Androidmanifest 配置权限了,刚刚运行后发现还是收不到推送,相关日志如下 07-08 17:56:51.519 E/JIGUANG-JCore(28286): [AndroidUtil] The permissoin is required - android.permission.WRITE_SETTINGS 07-08 17:56:53.063 W/JIGUANG-JCore(28286): [JCoreGlobal] JCore init code = 11 07-08 17:56:58.068 D/JIGUANG-JPush(28286): [JPushInterface] action:init - sdkVersion:3.2.0, buildId:445 07-08 17:56:58.710 W/JIGUANG-JCore(28286): [JCoreGlobal] JCore init code = 11 07-08 17:56:26.381 I/PackageManager( 756): Removing old permission: com.chezixiang.app.car.permission.JPUSH_MESSAGE from package com.chezixiang.app.car --------- beginning of main 07-08 17:56:51.360 D/ActivityThread(28286): BDC-Calling onReceive: intent=Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10 pkg=com.chezixiang.app.car cmp=com.chezixiang.app.car/cn.jpush.android.service.PushReceiver (has extras) }, receiver=cn.jpush.android.service.PushReceiver@35cb8cb6 07-08 17:57:01.385 V/PackageManager( 756): Sending package changed: package=com.chezixiang.app.car components=[cn.jpush.android.service.DataProvider, cn.jpush.android.service.PushService, cn.jpush.android.service.PushReceiver, cn.jpush.android.service.AlarmReceiver]

jiwufeiyang commented 5 years ago

解决了,加上WRITE_SETTINGS后可以收到推送了