我使用cordova-plugin-fcm
,并调用它的两个函数onTokenRefresh
,并getToken
获取我的设备(Android)的FCM令牌.它们都给了我相同的FCM令牌值,它曾经用于工作,我的应用程序用于接收通知.
但是现在,我甚至无法从Firebase控制台向设备发送任何通知,这会给我带来这样的错误:
Unregistered registration token
Run Code Online (Sandbox Code Playgroud)
我没有卸载应用程序或更改它.为什么它说这个令牌是未注册的,虽然getToken
它onTokenRefresh
似乎有用并且给我与我从一开始就拥有的相同fcm令牌?
cordova firebase firebase-cloud-messaging cordova-plugin-fcm
我正在使用Phonegap和Firebase(fcm)来接收推送通知。我正在使用Android 8进行测试。
我希望设备在前台运行时收到推送通知(作为应用程序中的弹出消息)。如果应用关闭或在后台运行,我希望消息显示为通知,当我单击通知时,它将在前台打开该应用并调用通知事件功能。
到目前为止发生的事情是:
打开应用程序时,将通过推送通知并在应用程序中显示-正确
当应用最小化时,在顶部栏中会显示一个推送通知-正确...但是
当我单击通知消息时,它将打开我的应用程序/将其置于前台,但是未调用“通知”事件侦听器-INCORRECT
关于此问题有很多寻求帮助的请求,我已经处理了很多请求,但是没有一个为我的应用程序提供有效的解决方案(大多数都在2016年至2018年之间,而不是在2019年之间)。
首先,这需要适用于Android。因此,我尝试删除通知有效负载,并且仅使用数据有效负载。但是,这不能解决问题。
这是我当前的有效负载:
$notification = array
(
'body' => 'test',
'title' => 'test',
"icon" => 'notification_icon',
"content_available" => true,
);
$data = array
(
"title" => "test",
"body" => "test",
"icon" => "notification_icon",
"content_available" => true,
);
$fields = array
(
'registration_ids' => $registrationIds,
'notification' => $notification,
'data' => $data,
"priority" => "high",
"content_available" => true
);
Run Code Online (Sandbox Code Playgroud)
据我了解,有3种发送通知的方式:
1)作为“通知”。如果该应用当前正在运行,则在前台运行;如果关闭或最小化该应用,则在顶部栏中的后台运行(并且该应用的图标上面有一个小徽章,表示一条消息);但是在后台运行时,当在应用程序上单击该消息时,加载但未调用on通知功能。
2)作为“数据”。这似乎仅在前景中起作用,没有顶部栏消息,并且该应用程序的图标上方没有小徽章。如果应用程序在后台运行,则根本没有推送通知。
3)作为“ notificaton”和“ data”。在后台时,应用程序图标上方会带有一个徽章。单击顶部条消息时,将加载应用程序,但不会调用on通知功能。
同样,即使应用程序在后台,如果它收到推送通知并将应用程序放在前台,也不会显示通知消息。仅当收到通知时应用程序已经在前台时才有效。
这是我的事件监听器:
var app …
Run Code Online (Sandbox Code Playgroud) 我目前正在处理ionic4应用程序,但是最近在向应用程序添加https://ionicframework.com/docs/native/fcm插件后,在android reall设备上构建该应用程序时,它停止了工作。
起初它抱怨结构密钥,但是我从来没有打算在我的应用程序上使用结构崩溃解决。
错误日志:
* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.1.1)
Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.1.1)
Duplicate class …
Run Code Online (Sandbox Code Playgroud) 我使用ionic2
带FCM
.
我在应用运行时收到通知.
我需要在应用程序运行时收到通知.
我怎样才能做到这一点 ?
当我尝试在Xcode中构建cordova应用程序时,我收到以下错误:
/ Users/User/PhpstormProjects/project/project-app/platforms/ios/Pods/Target Support Files/Pods-Project/Pods-Project-resources.sh:line 7:/resources-to-copy-Project.txt:Permission否认
另外我注意到在我的笔记本电脑上的任何地方都找不到以下文件资源到拷贝 - Project.txt,因此我尝试使用不同版本的cocoapods运行pod install.
我已经尝试使用chmod a + x向文件夹添加权限.
这真让我抓狂。几周前,我添加了对 FCM 推送通知的支持并使其全部正常工作。上周我注意到(通过我的测试应用程序)它已经停止工作。通过一个漫长而复杂的过程,我设法让它重新开始工作。今天早上...安装了我的测试应用程序,设备检索了一个 pushID,将该 pushID 保存到我的服务器,然后成功地将推送通知发送到我的设备。我直接从我的服务器和 FCM 控制台通知部分做了一些 - 两者都在工作。
太好了...不要碰任何东西...继续下一个项目进行编码。
我正在使用应用程序注册功能...所以我卸载我的应用程序并重新安装,此时应用程序收到一个新的 pushID...与上述过程相同,它将 pushID 保存到我的服务器。但这一次消息已发送但从未到达。我再试一次 - 同样的事情。消息已成功发送...但它永远不会到达。
object(stdClass)#4 (5) { ["multicast_id"]=> int(7727871665417217028) ["success"]=> int(1) ["failure"]=> int(0) ["canonical_ids"]=> int(0) ["results"]=> array(1) { [0]=> object(stdClass)#5 (1) { ["message_id"]=> string(35) "0:1498579447399689%94806eb594806eb5" } } }
沮丧我离开我的房子,去跑一些差事,大约 2.5 小时后回来再次测试......这次消息甚至无法发送。
object(stdClass)#4 (5) { ["multicast_id"]=> int(4811433973238781554) ["success"]=> int(0) ["failure"]=> int(1) ["canonical_ids"]=> int(0) ["results"]=> array(1) { [0]=> object(stdClass)#5 (1) { ["error"]=> string(13) "NotRegistered" } } }
我在这里缺少什么?它从完全正常工作......到成功发送但没有接收......到根本不发送。每个 pushID 是否有某种时间/日期戳到期?pushID 在 FCM Cloud 中注册后才能使用是否需要一些时间?它们只能使用一次吗?
每次我启动我的应用程序时,它都会检查设备的 pushID 是否已更改,每次(简单的停止/启动...不是完全卸载/重新安装)我都可以看到 pushID 是相同的 …
cordova firebase firebase-cloud-messaging cordova-plugin-fcm
我检查了所有关于此错误的帖子:
任务执行失败':transformClassesWithJarMergingForDebug'
但是这些都不符合我的情况,没有一个回答/解决了我的问题...我厌倦了搜索(大约12个小时但没有找到任何东西......)
我正在使用Ionic(最新版本)来构建应用程序.我的第一个问题是关于这个SenderID
问题:不能把它放在init函数中,但当我删除它时,它不能在Android上工作......当我说它时,它说它不可分配PushOptions
,你看到了特技.
我的实际错误如下:
任务':transformClassesWithJarMergingForDebug'的执行失败.com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:org/apache/cordova/BuildHelper.class
我在这里做了什么:
所以我决定切换到cordova-plugin-fcm
我在不同的地方看到它很容易配置它.跳过它,生成所有必要的文件(google-services.json
等等......)安装并运行插件所需的所有TS:没有TS错误.
我的问题:当我跑ionic cordova run android
- 或只是一个构建,它是相同的 - 我有多个问题:
首先我遇到了一个关于未知的播放服务的问题,因此它会跳过版本9.0.0:我通过使用cordova-plugin-firebase
而不是来解决它cordova-android-play-services-gradle-release
.
其次我有这个:
任务':transformClassesWithJarMergingForDebug'的执行失败.com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:org/apache/cordova/PermissionHelper.class
我决定使用:
cordova plugin rm cordova-plugin-compat --force
cordova plugin add cordova-plugin-compat@1.2
Run Code Online (Sandbox Code Playgroud)
但现在,我坚持"实际错误",无法构建我的应用程序.
Cordova插件:
cordova-android-play-services-gradle-release 1.1.3 "cordova-android-play-services-gradle-release"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-browsertab 0.2.0 "cordova-plugin-browsertab"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-console 1.0.5 "Console"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-firebase 0.1.24 "Google Firebase Plugin"
cordova-plugin-multidex 0.1.2 "Cordova Multi Dex"
cordova-plugin-splashscreen 4.0.2 …
Run Code Online (Sandbox Code Playgroud) 当应用程序处于“ 后台”状态时,我可以在系统任务栏中看到通知。
但是,我希望该通知在系统任务栏中可见,即使该应用程序位于Foreground中也是如此。
我在Android上尝试了以下方法:
https://fcm.googleapis.com/fcm/send
描述这里既data
和notification
paylods:同样,只能看到在系统托盘中的通知时,应用程序在背景。该文件提到:
带有通知和数据有效载荷(后台和前台)的消息。在这种情况下,通知将传递到设备的系统托盘,而数据有效载荷将在启动器活动的意图之外传递。
我想念什么?
我正在使用Android和Cordova / Ionic。
cordova firebase ionic-framework firebase-cloud-messaging cordova-plugin-fcm
我已经安装了cordova-plugin-fcm,一切正常,除了一件小事.当应用程序处于后台/关闭状态并且从firebase发送推送通知时,会在设备中弹出通知.从托盘中单击该通知时,我的应用程序开始运行,但控件未进入fcm.onNotification().
app.component.ts中的代码如下所示
fcm.onNotification().subscribe(data=>{
if(data.wasTapped){
console.log("Received in background");
console.log(data);
} else {
console.log("Received in foreground");
console.log(data);
};
});
Run Code Online (Sandbox Code Playgroud) 我一直被这个问题困扰着(再次!)。FCM推送通知可以在Android以及我当前的实时/收费版本应用程序上正常运行(仍然可以正常运行)。但是最近我升级到了Cordova 7.1.0,iOS 4.4.0平台,并为我的下一次应用更新重新添加了所有插件。
除了iOS上的此FCM之外,一切都正常运行!不适用于所有版本和所有iOS设备。我之前遇到过此问题,但这是一个简单的修复(在FCM插件上缺少GoogleService-Info.plist文件)。但是目前这个问题又出现了,我真的不知道如何解决它。经历了很多问题,尝试了很多事情。
我已完成的步骤:
openssl s_client -connect gateway.push.apple.com:2195 -cert pushtry.pem -key pushtry.pem
在最后返回验证码0(OK)我从Xcode 10运行了该应用程序,并使用了多个iOS 11至12的iPhone。所有人都无法收到推送通知。但是,当我从Play商店下载我的应用时,它仍会收到推送通知。FCM插件版本为cordova-plugin-fcm 2.1.2。
请帮忙!除了上面提到的所有这些,我应该怎么做并检查?我需要尽快更新该应用。但是我很害怕更新后,所有带有新更新的应用程序的实时版本都不会收到推送通知,这对于我们的应用程序非常重要!
我怀疑配置文件与代码签名身份不匹配,但是我已经超过1年没有更改它们(仅在过期后才更新并重新创建证书)。我认为这不是FCM的问题,因为它发出了推送通知,在android上没有问题。但是话又说回来,我的应用程序的最新更新是两个月前。在那之后,我很少使用iPhone(尤其是推送通知),因为我没有iPhone。始终使用Android手机进行开发。所以也许我错过了什么?建议和解决方案,好吗?
我开发中的所有应用程序版本(我的本地MAC)现在无法正常工作。即使我尝试构建和运行较旧版本的应用程序。没有收到推送通知。因此,也许是我的cordova或iOS问题。
push-notification apple-push-notifications ios firebase-cloud-messaging cordova-plugin-fcm
我按照 ionic 文档安装了 cordova-plugin-fcm-with-dependecy-updated 并进行了所有必要的 firebase 配置。我将 FCM 导入到应用程序模块中。然后我将通知代码放入我的 app.component.ts 中
但是当我执行 ionic cordova run android 时,我有以下信息:
问题是它不显示令牌,请有人可以帮助我。
push-notification firebase-cloud-messaging cordova-plugin-fcm ionic5
Firebase FCM 消息支持tag
Android,这会导致新通知用具有相同标记的旧通知替换前一个通知。有没有办法在ios上做同样的事情?
这个答案建议在数据有效负载中使用线程 ID。但这对我不起作用。
ios firebase google-cloud-messaging firebase-cloud-messaging cordova-plugin-fcm
我遵循了两个建议安装以下内容的教程:
ionic cordova 插件添加 cordova-plugin-fcm-with-dependecy-updated npm install @ionic-native/fcm
安装到表示未安装 fcm 插件的设备后,我不断收到错误,因此我查看了建议卸载的https://www.npmjs.com/package/cordova-plugin-fcm-with-dependecy-updated#fcmontokenrefresh网站npm uninstall @ionic-native/fcm # 包含 Ionic 支持,但与 @ionic-native 的实现冲突。
所以我这样做并用这个代替:
import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated';
getUserToken(userId: string) {
FCM.getToken().then(token => {
console.log('token');
console.log(token);
});
}
getToken(userId: string) {
FCM.onTokenRefresh((fcmToken: string) => {
console.log('token refresh');
console.log(fcmToken);
});
}
Run Code Online (Sandbox Code Playgroud)
但现在我得到以下信息:
错误错误:未捕获(承诺中):TypeError:无法读取未定义的属性“onTokenRefresh”TypeError:无法读取未定义的属性“onTokenRefresh”
此时我被困住了。如果我使用 Ionic 插件,我会收到“未安装 FCMPluging”的信息,并且在使用 Cordova 库时会收到“无法读取未定义属性“onTokenRefresh”的错误信息。任何帮助将不胜感激。
{
"name": "",
"version": "0.0.1",
"author": "Ionic Framework",
"homepage": "https://ionicframework.com/",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng …
Run Code Online (Sandbox Code Playgroud)cordova ionic-framework cordova-plugins firebase-cloud-messaging cordova-plugin-fcm