Per prima cosa ci si deve registrare, anche con account gratuito, sulla console di firebase e si crea un progetto
si crea quindi una nuova applicazione. E' possibile creare applicazione per Android ed IOS. In questo caso si sceglie Android
per creare l'applicazione e' richiesto il solo nome del pacchetto Android
a questo punto si clicca sul pulsante con i tre puntini sovrapposti e si visualizza la configurazione SDK
e si scarica il file google-services.json che dovra' essere copiato nella directory /app del proprio progetto
si crea quindi un progetto Android usando il nome del pacchetto gia' fornito nella configurazione di Firebase
build.gradle (Project)
-------------------------------------
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.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: App)
-------------------------------------
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.lucainnocenti.notifica.notifica"
minSdkVersion 21
targetSdkVersion 23
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 'com.google.firebase:firebase-messaging:10.0.0'
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:23.4.0'
testCompile 'junit:junit:4.12'} apply plugin: 'com.google.gms.google-services'-------------------------------------
AndroidManifest.xml
-------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.lucainnocenti.notifica.notifica">
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" 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>
</application>
<service android:name=".MyFirebaseMessagingService" android:exported="false">
<inter-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</inter-filter>
</service>
<service android:name=".MyFirebaseInstanceIdService" android:exported="false">
<inter-filter>
<action android:name="com.google.firebase.MESSAGING_ID_EVENT" />
</inter-filter>
</service>
</manifest>
-------------------------------------MyFirebaseMessagingService.java
-------------------------------------
package com.lucainnocenti.notifica.notifica;
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceIdService;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
/** * Created by root on 29/11/16. */
public class MyFirebaseMessagingService extends FirebaseMessagingService{
private static final String TAG="MyFMService";
@Override public void onMessageReceived(RemoteMessage remoteMessage)
{
Log.d(TAG,"ID :"+remoteMessage.getMessageId());
Log.d(TAG,"Notification :" +remoteMessage.getNotification());
Log.d(TAG,"Data : "+remoteMessage.getData());
}
}
-------------------------------------MyFirebaseInstanceIdService.java
-------------------------------------
package com.lucainnocenti.notifica.notifica;
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
import com.google.firebase.messaging.FirebaseMessaging;
/** * Created by root on 29/11/16. */
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String TAG="MyFirebaseIIDService";
private static final String FRIENDLY_ENGAGE_TOPIC = "friendly_engange";
@Override public void onTokenRefresh(){
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG,"Token " + token);
FirebaseMessaging.getInstance().subscribeToTopic(FRIENDLY_ENGAGE_TOPIC);
}
}
-------------------------------------Una volta compilata ed installata l'applicazione si crea un messagggio dall'interfaccia web della Firebase Console dal menu Notification
Si possono creare diverse regole. La cosa piu' semplice e' mandare il messaggio a tutti gli utenti che hanno installato l'applicazione impostando il solo identificativo del pacchetto (altrimenti per creare dei messaggi personalizzati bisogna conoscere gli identificativi unici dei vari client)
Non e' possibile avere un QoS .. in pratica si sa se il messaggio e' stato inviato dal server ma non quanti sono stati consegnati regolarmente
Per inviare messaggi non e' strettamente necessaria l'interfaccia Web. Si puo' utilizzare anche il comando curl da riga di comando
Per prima cosa si clicca sull'icona dell'ingranaggio vicino al nome del progetto e si selezionano le impostazioni del progetto, si seleziona Cloud Messaging e si copia la Server Key (nel futuro si dovra' usare il token ovvero il codice sottostante)
e si lancia poi il seguente comando inserendo la
---------------------------------------
curl --insecure --header "Authorization: key=XXXXXXXXXXXX" --header "Content-Type:application/json" -d "{\"notification\":{\"title\":\"note-Title\",\"body\":\"note-Body\"}}" https://fcm.googleapis.com/fcm/send
---------------------------------------