گام هشتم : افزودن لایبرری ها و پلاگین و ... به پروژه .
1 ) ابتدا فایل build.gradle قسمت Project:... (قسمت Module:app نیست فایل بالاتر هست) را باز کنید و این خط کد را در بلاک dependencies به آن اضافه کنید.
classpath 'com.google.gms:google-services:3.2.0'
یعنی اون قسمت فایل باید اینگونه باشد :
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
2 ) خب بعد از آن به فایل buil.gradle قسمت (Module:app)
این لایبرری ها و این پلاگین را اضافه کنید:
compile 'com.google.firebase:firebase-core:11.8.0'
compile 'com.google.firebase:firebase-messaging:11.8.0'
}
apply plugin: 'com.google.gms.google-services'
** پلاگین را باید بعد از بستن بلاک بنویسید**
گام نهم : ساخت کلاسی به نام MyFirebaseInstanceIdService که این کلاس از FirebaseInstanceIdService مشتق شده و این کد ها رو در این کلاس قرار بدید:
package firebaseConfig;
import android.annotation.SuppressLint;
import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
/**
* Created by sanaebadi on 3/19/18.
*/
@SuppressLint("Registered")
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseInstanceIdSer";
@Override
public void onTokenRefresh() {
//Get Updated Token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "onTokenRefresh: " + refreshedToken);
//You Can Save The Token Into Third Party Server To Do AnyThing You Want
}
}
گام دهم : ساخت کلاس دیگر به نام MyFirebaseMessagingService که این کلاس از FirebaseMessagingService مشتق شده و کد های این کلاس نیز به این صورت هستن :
package firebaseConfig;
import android.annotation.SuppressLint;
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;
import activity.MainActivity;
import ir.sanaebadi.retrofiteWithFirebase.R;
/**
* Created by sanaebadi on 3/19/18.
*/
@SuppressLint("Registered")
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMessagingServ";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "onMessageReceived: " + remoteMessage.getFrom());
//Check If The Message Contains Data
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "onMessageData: " + remoteMessage.getData());
}
//Check If The Message Contains Notification
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "onMessageNotification: " + remoteMessage.getNotification().getBody());
sendNotification(remoteMessage.getNotification().getBody());
}
}
/**
* Display The Notification
*
* @param body
*/
private void sendNotification(String body) {
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
//Set Sound Of Notification
Uri notificationSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.firebase)
.setContentTitle("Firebase Cloud Messaging")
.setContentText(body)
.setSound(notificationSound)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert notificationManager != null;
notificationManager.notify(0, builder.build());
}
}
** کدها با کامنت همراه هستند نیازی به توضیح اضافه نیست **ّ
گام یازدهم : آپدیت منیفست هست که باید بلاک Service را ایجاد کنیم و این دو کلاس را به آن معرفی کنیم . مانند کد زیر :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ir.sanaebadi.retrofiteWithFirebase">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:name="app.AppController"
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="activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name="activity.DetailsActivity"
android:theme="@style/DetailsTheme"/>
<service android:name="firebaseConfig.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name="firebaseConfig.MyFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
</application>
</manifest>
گام دوازدهم و آخر : برگشت به اکانت خود در فایربیس و انتخاب Notifications از منوی آپشن های فایربیس و اکانت خود.
و New Message را انتخاب کنید و به کاربران خود پیام بفرستید.
و SEND MESSAGE را انتخاب کنید و تمام !
خب تمامی کدهاش این بود . شما می تونید این کد ها که در واقع دوتا کلاس هستن را در پروژه های خود اضافه کنید و استفاده کنید.
ولی باید پیش نیاز هاشو که براتون گفتم رو اوکی کنید.
من یه پروژه ی کامل با استفاده از رتروفیت و فایربیس ساختم و اون را در گیت هابم گذاشتم. اینم لینک پروژه ی من در گیت هاب !
امیدوارم واستون مفید باشه
و ممنون بابت همراهی شما با این پست
موفق باشید