我头疼得很厉害 我在使用Ubuntu 14.04的Google Compute Engine虚拟机上的生产托管中运行了'web-app',写了 Rails4 ,其中我使用 Rpush gem / Firebase 来通知 Android应用'我的应用'。
本地我使用类似的配置进行开发:环境 rvm具有相同的Rails版本。 同时,使用AndroidStudio,我正在开发'my-app' Android应用程序 在Ubuntu 16.04上。
当Rails / Rpush发送通知时,我会在'my-app'上收到通知 所以我控制通知过程的两个方面(除了Firebase作为中间层) 大。
直到几天前一切正常。
生产环境继续良好运作 本地,正在开发中,当'web-app'发送通知时(通过RPush / Firebase)我没有收到任何类型的消息,但是我收到了它在生产中,在'my-app'的'release-version'上!!!!
通常情况下,在本地工作,当'本地''网络应用'发送通知时,'本地''我的应用'会收到它;
在制作中,当'主持''we-app'发送通知时,'my-app'的'release-version'会收到它。
好几天就像在Firebase中,在中间层,通过'my-app'的'release-version'广播每个通知,也来自'本地'调试环境 !!
两个环境的相同版本。
它在几天前运作良好
当然,我已经触及了一些事情......这个项目正在进行中。
我已经进行了很多调试,我已经多次控制配置(本地,主机和Firebase)读取许多没有结果的日志。
一切似乎都运作良好!!
有人知道一些方法可以告诉我如何调试/理解这种神秘的(对我而言)行为吗?
在Rails 中,当保存邮件时,会触发推送通知的方法,如 GitHub by RPush存储库中所述。
在Android 中,在“MyFirebaseMessagingService扩展FirebaseMessagingService”类中,在重写方法'onMessageReceived(RemoteMessage remoteMessage)上'我收到消息(通知或数据) - 跟随'quickstart-android / messaging '示例。
在Firebase中我有一个项目,我将'服务器密钥'和'google-services.json'。
我的头痛越来越多了 欢迎任何建议。
更新20180326
我使用在发送消息,配置和rpush日志摘录(Rails服务器端 - 本地和托管)时执行的代码升级我的问题。
保存'消息'后触发的Rails方法
def notify_gcm(data)
if Rpush::Gcm::App.find_by_name(<firebase_app>).nil?
app = Rpush::Gcm::App.new
app.name = <firebase_app>
app.auth_key = <firebase-server_key>
app.connections = 1
app.save!
end
n = Rpush::Gcm::Notification.new
n.app = Rpush::Gcm::App.find_by_name(<firebase_app>)
n.delay_while_idle = true
n.registration_ids = [<device_token>, ...]
n.priority = 'high'
n.content_available = true
# notification type: DATA MESSAGE
n.data = { data: { message: data[:message]["content"] }, notificationdata: { body: ..., title: ..., icon: ... }
}
n.save!
Rpush.push
end
配置/初始化/ RPUSH
Rpush.configure do |config|
config.client = :active_record
config.push_poll = 5
config.batch_size = 100
config.pid_file = 'tmp/rpush.pid'
config.log_file = 'log/rpush.log'
config.log_level = (defined?(Rails) && Rails.logger) ? Rails.logger.level : ::Logger::Severity::ERROR
end
Rpush log
BEGIN
INSERT INTO `rpush_notifications` (`type`, `app_id`, `delay_while_idle`, `registration_ids`, `priority`, `content_available`, `data`, `created_at`, `updated_at`) VALUES (...)
COMMIT
SELECT `rpush_apps`.* FROM `rpush_apps`[<firebase_app>] Starting 1 dispatcher...
SELECT COUNT(*) FROM `rpush_notifications` WHERE (processing = 0 AND delivered = 0 AND failed = 0 AND (deliver_after IS NULL OR deliver_after < '2018-03-25 10:27:22.719515'))
BEGIN
SELECT `rpush_notifications`.* FROM `rpush_notifications` WHERE (processing = 0 AND delivered = 0 AND failed = 0 AND (deliver_after IS NULL OR deliver_after < '2018-03-25 10:27:22.720521')) ORDER BY created_at ASC LIMIT 100 FOR UPDATE
UPDATE `rpush_notifications` SET processing = 1 WHERE rpush_notifications`.`id` = 210
COMMIT
SELECT COUNT(*) FROM `rpush_notifications` WHERE (processing = 0 AND delivered = 0 AND failed = 0 AND (deliver_after IS NULL OR deliver_after < '2018-03-25 10:27:22.774452'))
SELECT `rpush_apps`.* FROM `rpush_apps` WHERE `rpush_apps`.`id` = 1 LIMIT 1
[<firebase_app>] 210 sent to ... <proper registration_ids>
Rpush由命令行启动为守护程序:
rpush start -e production
答案 0 :(得分:0)
<强>解决强>
<强>的Gemfile 强>
删除了gem'trail_12factor',group:production
此前它已被移除到托管(生产):(