google-app-engine - 从 Google AppEngine 调用 FCM 后端服务时出错
问题描述
我正在使用 FCM(我们使用 GCM)设置我的第一个应用程序并按照教程进行操作。我有一个基于 GAE 标准的 Android 应用程序和一个基于 servlet 的应用程序。为了测试它,有一个向应用程序发送消息的 servlet。
这是几个小时前的工作,我可以调用 servlet 并在应用程序上收到测试消息,但现在我只在 FirebaseMessaging.getInstance().sendAsync(message).get() 方法中收到异常
com.google.firebase.messaging.FirebaseMessagingException: Error while calling FCM backend service
和
java.net.UnknownHostException: accounts.google.com
有时一个,有时另一个。
这是 GAE servlet 调用的方法。我检查了我使用的令牌是否正确,并且它是当前在 Android 设备中处于活动状态的令牌。
final static String urlFCM = "https://fcm.googleapis.com/fcm/send";
private static void initFCM() {
FileInputStream serviceAccount;
try {
serviceAccount = new FileInputStream("WEB-INF/Orchestram-e2e1ceeb2481.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://orchestram-cerqana.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
} catch (Exception e) {
e.printStackTrace();
}
/// TODO:
}
public static String sendFCM(final JSONObject value, final String token, final boolean back) {
initFCM();
Message message = Message.builder()
.putData("score", "850")
.putData("time", "2:45")
.setToken(token)
.build();
try {
String response = FirebaseMessaging.getInstance().sendAsync(message).get();
} catch (Exception e) {
e.printStackTrace();
return "ERROR";
}
return "HECHO";
}
解决方案
原来问题是GAE上这个特定项目的计费被禁用。一旦启用,它就会再次工作(而且我仍然低于免费套餐,所以没有增加实际成本)
推荐阅读
- windows - 使用嵌入式 matlab 函数创建用户界面的最佳选择
- modal-dialog - 通过后退按钮关闭 Ionic 4 中的模态
- python - Mac Book Pro 视网膜显示器上的枕头
- ubuntu - Visual Studio Code dotnet:找不到命令(Linux mint)
- python - 在 python 中导入 Excel
- testing - 如何在单元测试中摆脱错误 422 laravel?
- python - Python。积分问题。TypeError:只有大小为 1 的数组可以转换为 Python 标量
- dart - 如何在flutter中应用滑动以关闭友好聊天应用程序中的功能
- asp.net-mvc - 如何在 Kendo UI MVC 中与其父级一起保存子级列表?
- python - 使用 Pygame 从 Base64 字符串加载图像