Monday 3 July 2017

Firebase Cloud Messaging (FCM)

 Firebase Cloud Messaging (FCM)

create a new project

----------------------------MainActivity.java----------------------------- 

package httpbcom.firebasenewdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

----------------------------activity_main.xml-----------------------------

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:app="http://schemas.android.com/apk/res-auto" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 tools:context="httpbcom.firebasenewdemo.MainActivity">

    <TextView  
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="Hello World!"/>
</LinearLayout>
yello line you will be added to your new porject

----------------------------AndroidManifest.xml----------------------------

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 package="httpbcom.firebasenewdemo">
    <uses-permission android:name="android.permission.INTERNET" />
    <application 
 android:allowBackup="true" 
 android:icon="@mipmap/ic_launcher" 
 android:label="@string/app_name" 
 android:roundIcon="@mipmap/ic_launcher_round" 
 android:supportsRtl="true" 
 android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

        <!--service to create firebase instance ID(Device Token)--> 
 <service android:name=".MyFirebaseInstanceIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
            </intent-filter>
        </service>
    </application>

</manifest>
 
 
 
 
 
 
 
 
 
create a new class MyFirebaseInstanceIDService.class

 
 
 
 

----------------------------MyFirebaseInstanceIDService.class-------------------

 
 
 
 package httpbcom.firebasenewdemo;

import android.util.Log;

import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;

/** * Created by munnu on 27/06/2017. */
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = "MyFirebaseIIDService";

    @Override    public void onTokenRefresh() {
        //Getting registration token 
 String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        //Displaying token on logcat 
 Log.e(TAG, "Refreshed token: " + refreshedToken);
    }

    private void sendRegistrationToServer(String token) {
        //You can implement this method to store the token on your server 
 //Not required for current project    }
}
 
 
 
 
create a new class MyFirebaseMessagingService.class

----------------------------MyFirebaseMessagingService.class-------------------

  package httpbcom.firebasenewdemo;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import android.util.Log;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

/** * Created by munnu on 27/06/2017. */
public class MyFirebaseMessagingService extends FirebaseMessagingService {

    private static final String TAG = "MyFirebaseMsgService";

    @Override    public void onMessageReceived(RemoteMessage remoteMessage) {

        //Displaying data in log 
 Log.d(TAG, "From: " + remoteMessage.getFrom());
        Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());

        //Calling method to generate notification 
 sendNotification(remoteMessage.getNotification().getBody());
    }

    //This method is only for generating local notification with push notification data(titlenmessage) 
 private void sendNotification(String messageBody) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);
        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle("Firebase Push Notification")
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);
 NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 notificationManager.notify(0, notificationBuilder.build());
    }
}
 
 

----------------------------build.gradle(project:FireBaseDemo)------------------------

 // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.2' 
 classpath 'com.google.gms:google-services:3.0.0' 
 // NOTE: Do not place your application dependencies here; they belong 
 // in the individual module build.gradle files    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
 
  

----------------------------build.gradle(Module:FireBaseDemo)------------------------

apply plugin: 'com.android.application'
android {
    compileSdkVersion 25 
 buildToolsVersion "25.0.3" 
 defaultConfig {
 applicationId "httpbcom.firebasenewdemo" 
 minSdkVersion 15 
 targetSdkVersion 25 
 versionCode 1 
 versionName "1.0" 
 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }
    buildTypes {
        release {
            minifyEnabled false 
 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'    })
    compile 'com.android.support:appcompat-v7:25.3.1' 
 compile 'com.android.support.constraint:constraint-layout:1.0.2' 
 testCompile 'junit:junit:4.12'
     compile 'com.google.firebase:firebase-messaging:9.6.0'
}

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

--------------------------And then you go this link-----------------------

     https://console.firebase.google.com/  


Enter your application name and select your country. then click on create project

  Now you will see a screen like this

 
 
  1. then click on "add Firebase to your Android app" 
  2.  
  3. .Now put 
    1. Package name  
    2. App nickname (optional)
    3. Debug signing certificate SHA-1 (optional)  
 
 
 
 
 
  Copy and paste the google-services.jFirebase Cloud Messaging(FCM)son file into the application root directory.
 
 and go to project and paste them into app folder
 
 
 
                                                       
 

No comments:

Post a Comment

AutoComplete Address (Updated)

-------------------------------------Activity---------------------------------- package placeautocomplete.iteritory.com; import androi...