Firebase, Rest and AndoidAnnotiations



我想将远程通知添加到现有的android应用程序中。我遵循了Firebase教程来做到这一点。所以我扩展了"FirebaseInstanceIdService"来获取令牌。这很好,但现在我想将此令牌发送给REST服务。

这是我的"FirebaseInstanceIdService",但它不起作用:(客户端始终为null。我还在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:无法实例化服务.classes.MyFirebaseInstanceIdService_:java.lang.InstructionException:java.lang.Class<。类。MyFirebaseInstanceIdService_>没有零自变量构造函数

MyFirebaseInstanceIdService的注释错误,因为它是一个必须使用@EService 的服务

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

相关内容

  • 没有找到相关文章

最新更新