wazzaday
wazzaday

Reputation: 9664

Cannot resolve symbol "FirebaseInstanceId"

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?

Upvotes: 23

Views: 43853

Answers (5)

Fayeq Almabhouh
Fayeq Almabhouh

Reputation: 1

fun setNewFcm() {
    FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
        if (!task.isSuccessful) {
            return@addOnCompleteListener
        }
        if (task.result != null) {
            val token: String = task.result
            AppSharedData.setFcmToken(token)
        }
    }
}

Or by using this

fun setNewFcm() {
    FirebaseInstallations.getInstance().getToken(true)
        .addOnCompleteListener { task ->
            if (!task.isSuccessful) {
                return@addOnCompleteListener
            }
            if (task.result != null) {
                val token: String = task.result.token
                AppSharedData.setFcmToken(token)
            }
        }
}

Upvotes: 0

M.SAKSHAM
M.SAKSHAM

Reputation: 21

This is the old version. FirebaseInstanceIdService is deprecated

package com.example.xxxxxxx.fcm;

public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService{

    @Override
    public void onTokenRefresh() {
        String refreshToken = FirebaseInstanceId.getInstance().getToken();
        sendRegistrationToServer(refreshToken);
    }

    private void sendRegistrationToServer(String refreshToken) {
    }
}

The new version is

package com.example.xxxxxxx.fcm;

import androidx.annotation.NonNull;

import com.google.firebase.messaging.FirebaseMessagingService;

public class MyFirebaseInstanceIdService extends FirebaseMessagingService {

    @Override
    public void onNewToken(@NonNull String token) {
        super.onNewToken(token);
        String refreshToken = FirebaseInstanceId.getInstance().getToken();
        sendRegistrationToServer(refreshToken);
    }

    private void sendRegistrationToServer(String refreshToken) {
    }
}

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

Upvotes: 2

Pia
Pia

Reputation: 31

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

Upvotes: 3

Santanu Sur
Santanu Sur

Reputation: 11477

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.

Upvotes: 14

Umar Hussain
Umar Hussain

Reputation: 3527

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

Upvotes: 1

Related Questions