Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot resolve symbol "FirebaseInstanceId"

Tags:

java

android

I am trying to use FirebaseInstanceId but keep getting the error

"Cannot resolve symbol FirebaseInstanceId".

The modules gradle includes

dependencies {
    compile 'com.google.firebase:firebase-messaging:+'
    compile 'com.google.firebase:firebase-iid:+'
}

The only thing which exists on com.google.firebase.iid seems to be .zzb. Am I missing something?

like image 227
wazzaday Avatar asked Mar 06 '18 11:03

wazzaday


People also ask

What is Firebaseinstanceid?

Firebase Instance ID provides a unique identifier for each app instance and a mechanism to authenticate and authorize actions (example: sending FCM messages). Instance ID is stable except when: App deletes Instance ID. App is restored on a new device. User uninstalls/reinstall the app.

What is FirebaseMessagingService?

public class FirebaseMessagingService extends Service. Base class for receiving messages from Firebase Cloud Messaging. Extending this class is required to be able to handle downstream messages.


3 Answers

Make sure you have all of these

 implementation 'com.google.firebase:firebase-core:17.2.1'

 implementation 'com.google.firebase:firebase-messaging:20.0.0'
 implementation 'com.google.firebase:firebase-auth:19.1.0' // not necessary(required for signout and sign in)

Just this much is required.

like image 135
Santanu Sur Avatar answered Oct 17 '22 16:10

Santanu Sur


Old questions but still relevant so here's an updated answer: As of now (sept 2020) only implementation 'com.google.firebase:firebase-messaging:20.2.4' is required in your app/build.gradle file (see referenced official doc).

To further add information that I've struggled to find elsewhere when I've researched how to implement push notifications for Android:
I'm assuming you're using FirebaseInstanceId to retrieve the Instance ID token created by Firebase and are following the guide (see linked documentation). If your main goal is to implement push notifications and you're using React Native I've found you don't need to create the MyFirebaseMessagingService that extends FirebaseMessagingService - you can implement the library react-native-firebase/app and react-native-firebase/messaging to access the token in clients App.

Install both @react-native-firebase/app and @react-native-firebase/messaging Then in your frontend App.js: import messaging from '@react-native-firebase/messaging';

async function requestUserPermission() {  
  const getFcmToken = async () => {
    const fcmToken = await messaging().getToken();
    if (fcmToken) {
      console.log(fcmToken);
      console.log('Your Firebase Token is:', fcmToken);
    } else {
      console.log('Failed', 'No token received');
    }
  };
  const authStatus = await messaging().requestPermission();
  const enabled =
    authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
    authStatus === messaging.AuthorizationStatus.PROVISIONAL;

  if (enabled) {
    getFcmToken();
    console.log('Authorization status:', authStatus);
  }
}
requestUserPermission();

I'm sure this can be refactored, please suggest edits :)
Official documentation Firebase
React Native Firebase library

like image 2
Pia Avatar answered Oct 17 '22 17:10

Pia


Only use the dependency firebase-messaging with firebase-core

firebase-iid is not required to be declared as dependency.

Here is the documentation : https://firebase.google.com/docs/cloud-messaging/android/client#set-up-firebase-and-the-fcm-sdk

like image 1
Umar Hussain Avatar answered Oct 17 '22 18:10

Umar Hussain