I am to using firebase-messaging
library and trying to fetch the token using below method on app launch.
FirebaseInstanceId.getInstance().getInstance
There was problem in merged manifest, following service was missing from the merged manifest.
Added same to AndroidManifest.xml
it worked like a charm.
<service android:name="com.google.firebase.components.ComponentDiscoveryService" >
<meta-data
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
Everything is working fine now.
You need add the below packages,
Optional - Xamarin.Firebase.Analytics (For analytics)
I Face the same problem while merging .aar manifest with the main app manifest , As @alphaguy mention that there are missing Components after merging the manifest , And After add the following service as he mention the error is gone :
<service
android:name="com.google.firebase.components.ComponentDiscoveryService"
android:exported="false" >
<meta-data
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
But still firebase Messaging not work because WakefulBroadcastReceiver that receives FirebaseInstanceId and FirebaseMessaging events and delivers them to the application-specific FirebaseInstanceIdService is missing too , This receiver is automatically added to your application's manifest file via manifest merge , in our case it was missing in the merge so we need to add it manually as follow :
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="false"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
FirbaseInstanceIdReceiver Documentation : https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceIdReceiver
Note : that you may need to add FirebaseApp.initializeApp(this);
at onCreate
in your ApplicationClass
.
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseApp.initializeApp(this);
}