既存のアンドロイドアプリにリモート通知を追加します。 Firebaseのチュートリアルに従いました。 "FirebaseInstanceIdService"を拡張してトークンを取得しました。 これは正常に動作しますが、今このトークンをRESTサービスに送信したいと考えています。ここでFirebase、Rest and AndoidAnnotiations
は私の「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から静的を削除し、「MyFirebaseInstanceIdSを追加しましたこのようなマニフェストにervice_」:
<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.InstantiationException: java.lang.Class < .classes.MyFirebaseInstanceIdService_>にはゼロがありません 引数のコンストラクタ
を使用する必要がサービスだからあなたは、MyFirebaseInstanceIdServiceのための間違った注釈を持っていますか?あなたのRestClientは静的であり、それを挿入するステートメントはありません。 – Passiondroid
はい、静的を使用しないでください。マニフェストに生成された 'MyFirebaseInstanceIdService_'も宣言してください。 – WonderCsabo
@WonderCsado:マニフェストでMyFirebaseInstanceIdService_を宣言すると、 "...デフォルトのコンストラクタがありません"と表示され、クラッシュします – Urkman