Android-在一个应用程序中设置多个具有不同服务的Firebase项目

时间:2018-07-24 12:45:51

标签: android firebase firebase-cloud-messaging

如何在一个Android应用程序中集成两个Firebase项目,以使两个项目仍可独立运行?

背景: 到目前为止,我一直在公司的应用程序中使用一些旧的Firebase项目,主要用于GCM。现在,我组织内的决定已更改,我们决定将大多数服务迁移到具有更高定价计划的新Firebase项目中-不幸的是,升级不是一种选择。

此刻我有:

  • 有关与某些营销服务有关的Cloud Messaging内容的旧项目,
  • 一个新的Firebase项目,该项目将用于Crashlytics,远程配置标志等。

由于交换机引起的限制,我们不希望随云消息传递而移动-所有用户都需要再次注册到新的通知通道。出于营销原因,这是不可接受的。

目前,我正尝试使用由Gradle插件自动初始化的新项目的JSON配置文件,以这种方式注册到旧版FCM服务:

FirebaseOptions fo = new FirebaseOptions.Builder()
        .setApplicationId(appId) 
        .setApiKey(apiKey)
        .setGcmSenderId(legacySenderId)
        .build();
FirebaseApp firebaseApp = FirebaseApp.initializeApp(context, fo, "legacy");

HandlerThread thread = new HandlerThread("getLegacyTokenThread");
thread.start();
Handler handler = new Handler(thread.getLooper());
handler.post(() -> {
    try {
        String token = FirebaseInstanceId.getInstance(firebaseApp).getToken(legacySenderId, "FCM");
        L.w("Received token: " + token);
    } catch (IOException e) {
        e.printStackTrace();
    }
});

但是这种方法似乎是覆盖我的默认项目配置,因此不会将异常报告给属于新项目的Crashlytics。

有人可以建议我如何使其成功运行两个项目吗?

1 个答案:

答案 0 :(得分:0)

在上面@Frank的评论之后,我没有成功使这种集成成功。

我们最终在营销服务中创建了一个新应用程序,该应用程序使用新凭证而不是更改先前凭证,这将导致集成无效。这样,我们既可以定位未更新的旧应用用户,也可以定位新用户。