按照这个指南,我将一个Android应用程序连接到了Google Firebase云消息服务(FCM ),
我按照这个答案建立了FCM之间的连接
我可以成功接收从FCM控制台发送的消息,但不能从AWS SNS控制台接收。
AWS上记录的消息传递状态显示我发送的每一条消息都成功,而我的设备上没有显示任何通知。
有没有办法检查发生了什么?
你可以使用这个视频教程https://youtu.be/iBTFLu30dSg与英文字幕的如何使用与AWS SNS的一步一步的FCM和如何从AWS控制台发送推送通知的例子。它对我很有效,我成功地从SNS控制台和我在移动设备上的代码接收了推送通知
这里的问题是,AWS SNS发送的是谷歌所称的数据消息。
使用FCM,您可以发送两种类型的消息 - 通知和数据。FCM 会自动显示通知,而数据消息则不会。更多关于这一点在这里: https://firebase.google.com/docs/cloud-messaging/concept-options
通过扩展FirebaseMessagingService并覆盖它的< code>onMessageReceived方法,即使你的应用程序在后台,来自SNS的数据消息仍然可以被处理。更多信息请点击这里:https://firebase . Google . com/docs/reference/Android/com/Google/firebase/messaging/firebasemesagingservice
我假设您希望AWS SNS消息模拟通知体验,即:
要做到这一点,你需要做三件事。
首先-您需要开始跟踪您的应用程序当前是否可见。有关如何可靠地检测它的详细信息,您可以在此处找到:https://stackoverflow.com/a/18469643/96911
其次,您需要通过发布通知来处理来自AWS SNS的数据消息,但仅当您的应用程序处于后台时:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
static protected int id = 0;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (!MyApplication.isActivityVisible()) {
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle(getString(R.string.app_name))
.setSmallIcon(R.drawable.notification_icon);
String message = remoteMessage.getData().get("default");
mBuilder.setContentText(message);
Intent resultIntent = new Intent(this, MainActivity.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.notify(id ++, mBuilder.build());
}
}
}
最后-当用户单击其中一个通知时,您需要从抽屉中清除所有通知。结合我在响应通知的活动上方链接的可见性跟踪,应该有以下onResume
方法:
@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
}
你问这个问题已经很久了,但对我来说,追根究底是如此痛苦,我决定无论如何都要回答。我希望这有助于你或那些拼命想让这个东西工作的人(因为让iOS工作是轻而易举的事)。
我遇到了完全相同的问题,来自带有设备令牌的Firebase的消息可以正常工作,但不知何故,从SNS到Firebase的消息没有传递。
我也开发了iOS应用程序,在那一刻,只需发送“brabra”即可向iOS发送消息。然而,FCM只接受特定的消息格式,以便从AWS SNS控制台进行测试。
下面是通过 SNS 和 FCM 成功向Android系统发送消息的示例格式。
{
"GCM": "{\"notification\": { \"body\": \"Sample message for Android endpoints\", \"title\":\"Hello world\" } }"
}
关键是我们必须修改为“通知”,而不是“数据”,并且应该在通知中有正文和标题。
我已经学习了这篇关于在Windows Phone应用程序中设置解析推送通知的教程。这是我的代码: 当我从Parse dashboard发送推送通知时,它不会被接收到。我试着在模拟器(Windows Phone 8.0)和设备(8.1)上运行,在前景、背景和关闭应用程序时,结果都是相同的。 当我使用像上面的“testchannel”这样的通道并使用segment选项时,通道名称会出现在选项的下拉列表
当我从Firebase发送推送时,如果应用程序在后台或关闭,我会收到通知,但当应用程序打开时,不是... 有什么建议,如何生成通知时,应用程序是前景?
当我的应用程序前台服务被终止时,不会收到FCM通知,更清楚的是,我正试图让我的应用程序始终在后台运行,我使用前台服务来实现这一点,有时应用程序未被ANDROID系统终止,前台通知会出现15个多小时,但其他情况下,当我的前台通知被终止,并且我发送FCM通知时,它在1小时或更短时间内被终止,而我的设备没有收到FCM通知!!这里有什么问题!我怎样才能解决它!
我想在用户收到应用程序上的通知时自动启动应用程序。启动程序图标上不会有点击操作。
当应用程序在前台时不接收推送通知,但当应用程序在后台时接收我已遵循来自https://medium . com/@ ankushaggarwal/GCM-setup-for-Android-push-notifications-656 cf DD 8 adbd的FCM教程
我正在使用Firebase GMS服务开发android应用程序。 我试着按照他们的教程去做,我按照他们说的做了项目,下载了json文件。 但当我尝试将我的应用程序连接到Firebase时。他们告诉我错误 无法解析Android应用程序模块的Gradle配置。解析gardle构建issuse和/或重新同步。 然而,我认为我的等级脚本是完美的(我会把它们写在页面的底部) 这是我的等级构建控制台 这是