Firebase、Rest 和 AndoidAnnotiations

Firebase, Rest and AndoidAnnotiations

我想向现有 android 应用添加远程通知。 我遵循了 Firebase 教程来这样做。 所以我扩展 "FirebaseInstanceIdService" 来获取令牌。 这工作正常,但现在我想将此令牌发送给 REST 服务。

这是我的 "FirebaseInstanceIdService",但这不起作用 :( 客户端始终为空。我还在 Activity 中使用这段代码来处理对 REST 服务的其他请求,它工作正常...

对这里的错误有什么建议吗?

@EBean
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {

    @Bean
    MyAuthInterceptor authInterceptor;
    @RestService RestClient client;

    public RestClient getRestClient()
    {
        return client;
    }

    @AfterInject
    void initAuth()
    {
        RestTemplate template = client.getRestTemplate();
        List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();;
        interceptors.add(authInterceptor);
        template.setInterceptors(interceptors);

        List<HttpMessageConverter<?>> converter = new ArrayList<HttpMessageConverter<?>>();
        converter.add(new GsonHttpMessageConverter());
        template.setMessageConverters(converter);
    }

    @Override
    public void onTokenRefresh()
    {
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();

        DeviceTokenJson token = new DeviceTokenJson();
        token.token = refreshedToken;
        token.env = "prod";
        token.os = "android";
        token.disabled = 0;

        RestClient test = getRestClient();
        ResponseJsonNotification response = getRestClient().registerToken(token);
    }
}

更新:

按照建议,我从 RestClient 中删除了静态,并将 "MyFirebaseInstanceIdService_" 添加到清单中,如下所示:

    <service
        android:name=".classes.MyFirebaseInstanceIdService_">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>

现在我收到 MyFirebaseInstanceIdService_ has no default constructor 错误消息...

当我启动应用程序时崩溃:

java.lang.RuntimeException: Unable to instantiate service .classes.MyFirebaseInstanceIdService_: java.lang.InstantiationException: java.lang.Class<.classes.MyFirebaseInstanceIdService_> has no zero argument constructor

您对 MyFirebaseInstanceIdService 的注释有误,因为它是您必须使用 @EService 的服务

@EService
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {...}