Lily Monta
Lily Monta

Reputation: 15

Create firebase push notification on Android Java

I'm having difficulties on implementing Firebase push notification in android.

Any help would be very helpful.

Upvotes: -1

Views: 21

Answers (1)

Benjamin Lawson
Benjamin Lawson

Reputation: 21

Add the following in app/build.gradle:

dependencies {
    implementation 'com.google.firebase:firebase-messaging:23.3.1'
    implementation 'com.google.firebase:firebase-analytics:21.5.0'
}

Also, at the bottom:

apply plugin: 'com.google.gms.google-services'

In project-level build.gradle, add:

dependencies {
    classpath 'com.google.gms:google-services:4.3.15'
}

Now, Create FirebaseMessageReceiver.java

 public class FirebaseMessageReceiver extends FirebaseMessagingService {

    @Override
    public void onNewToken(@NonNull String token) {
    }

    @Override
    public void handleIntent(@NonNull Intent intent) {
        if (intent.getExtras() != null) {
            for (String key : intent.getExtras().keySet()) {
                Object value = intent.getExtras().get(key);
            }
        }
        
        try {
            if (intent.getExtras() != null) {
                RemoteMessage.Builder builder = new RemoteMessage.Builder("MessagingService");
                for (String key : intent.getExtras().keySet()) {
                    builder.addData(key, intent.getExtras().get(key).toString());
                }

                onMessageReceived(builder.build());

            } else {
                super.handleIntent(intent);
            }
        } catch (Exception e) {
            super.handleIntent(intent);
        }
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        if (remoteMessage.getData().size() > 0) {
            String title = remoteMessage.getData().get("title");
            String body = remoteMessage.getData().get("body");
            NotificationHelper.sendNotification(this, title, body);
        }

        if (remoteMessage.getNotification() != null) {
            NotificationHelper.sendNotification(this,
                    remoteMessage.getNotification().getTitle(),
                    remoteMessage.getNotification().getBody());
        }
    }
}

Register Service in AndroidManifest.xml

<service
    android:name=".FirebaseMessageReceiver"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

Also, add internet permission:

<uses-permission android:name="android.permission.INTERNET"/>

Get FCM Token in MainActivity.java

 FirebaseMessaging.getInstance().getToken()
                .addOnCompleteListener(new OnCompleteListener<String>() {
                    @Override
                    public void onComplete(@NonNull Task<String> task) {
                        if (!task.isSuccessful()) {
                            Log.w(TAG, "Fetching FCM token failed", task.getException());
                            return;
                        }

                        // Get the token
                        String token = task.getResult();
                        Log.d(TAG, "FCM Token: " + token);
                        Toast.makeText(MainActivity.this, "FCM Token: " + token, Toast.LENGTH_LONG).show();
                    }
                });

Upvotes: 0

Related Questions