خب گام به گام با من همراه باشید که بعد گذراندن چند گام ساده , بتونیم برای کاربرامون پوش نوتیفیکیشن رو ارسال کنیم.
گام اول : ساخت اکانت در سایت فایربیس
گام دوم : ساختن یک پروژه در سایت فایربیس به این ترتیب که بعد از ساخت اکانت با توجه به تصویر " GET STARTED " را انتخاب کنید .
گام سوم : بعد از این مرحله تصویر زیر بر " CREATE NEW PROJECT " را انتخاب کنید.
گام چهارم : بعد از گام سوم برای شما پنجره ی " Add a Project " باز خواهد شد که نامی برای پروژه ی خود و نیز کشور را انتخاب کنید.
گام پنجم : در پنجره ی بعدی که باز می شود شما " Add Firebase to your Android app " را انتخاب کنید.
گام ششم : مرحله ی مهمی هستش. در اینجا شما با 3 کادر رو به رو هستید . که باید در کادر اول به دقت پکیج نیم خود را از اندروید استودیو اینجا بنویسید.
در کادر دوم نامی را برای اپ خود انتخاب کنید.
و اما در کادر سوم که " Debug signing certificate SHA-1 " هست را طبق این لینک به دست آورید و در اینجا قرار بدید.
گام هفتم : بعد از این مرحله , پنجره ی هدایت شما و دانلود فایل google-service.json و هم چنین طریقه ی استفاده از آن را به شما گفته...
شما این فایل رو دانلود کنید با کلیک روی اون دکمه و اون رو بردارید و مانند این لینک آن را در پروژه ی اندروید استودیو قرار بدید.
گام هشتم : افزودن لایبرری ها و پلاگین و ... به پروژه .
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 را انتخاب کنید و تمام !
خب تمامی کدهاش این بود . شما می تونید این کد ها که در واقع دوتا کلاس هستن را در پروژه های خود اضافه کنید و استفاده کنید.
ولی باید پیش نیاز هاشو که براتون گفتم رو اوکی کنید.
من یه پروژه ی کامل با استفاده از رتروفیت و فایربیس ساختم و اون را در گیت هابم گذاشتم. اینم لینک پروژه ی من در گیت هاب !
امیدوارم واستون مفید باشه
و ممنون بابت همراهی شما با این پست
موفق باشید
با تشکر از توضیحات شما
اگه از قسمت Tools و بعد Firebase داخل اندروید استودیو بیایم و با یک جیمیل کاکنت بشیم به فایربیس ، نیازی به انجام مراحی دوم تا ششم نیست درسته؟
(ضمن اینکه باید حتما وی پی ان روشن باشه بعد ، بجای گامهای 1 تا 6 ، مراحلی که داخل اندروید استودیو و بعد وقتی سایت فایربیس رو باز میکنه باید طی کنیم فقط)
سوال دوم:
گام نهم دهو و یازدهم باری چی هستش؟ بدون اضافه کردن این کلاسها میشه نوتیفیکیشن ارسال کرد