تالار گفتمان nCIS.ir

نسخه‌ی کامل: ارسال پوش نوتیفیکیشن با استفاده از سرویس فایربیس
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان  Heart امیداوارم حال همگی خوب باشه ... و سال نوتون مبارک ... 
ابن بار میخوام در رابطه با سرویس فایربیس گوگل براتون بگم . تا آخر پست با ما همراه باشید که براتون نحوه ی ارسال پوش نوتیفیکیشن ساده برای کاربراتون را از طریق سرویس فایربیس بگم .
البته بگم که این سرویس برای ما تحریم هست. ( به هر دلیلی حالا ) شما باید از VPN استفاده کنید. پس دقت کنید خواهشا.
و باید بگم که فایربیس کلی سرویس داره . که در اینجا فقط پوش نوتیفیکیشن رو براتون میگم. برای اطلاعات بیشتر به این لینک رجوع کنید !
خب قبل از هر کاری اول باید توی سایت فایربیس برای خودتون یک اکانت بسازید. 
ساختن اکانت در این سایت رایگان هست ولی جوری که گفتم نیاز به VPN داره ! پس به این  لینک مراجعه کنید و یک اکانت برای خودتون بسازید. 
مراحلش ساده اس ولی برای راهنمایی به این لینک ویدیو در یوتیوب مراجعه کنید.
خب گام به گام با من همراه باشید که بعد گذراندن چند گام ساده , بتونیم برای کاربرامون پوش نوتیفیکیشن رو ارسال کنیم.

گام اول : ساخت اکانت در سایت فایربیس
گام دوم : ساختن یک پروژه در سایت فایربیس به این ترتیب  که   بعد از ساخت اکانت با توجه به تصویر " GET STARTED " را انتخاب کنید .



[عکس: images?q=tbn:ANd9GcQU9Crb2Ug4SZ0VV4DbwBq...BFw7VlhFMn]


گام سوم : بعد از این مرحله تصویر زیر بر " CREATE NEW PROJECT "  را انتخاب کنید.

[عکس: images?q=tbn:ANd9GcQGUxB7G6gKoBmjFwzi-3W...Pt62PpbXZA]




گام چهارم : بعد از گام سوم برای شما پنجره ی " Add a Project "  باز خواهد شد که نامی برای پروژه ی خود و نیز کشور را انتخاب کنید.

[عکس: images?q=tbn:ANd9GcTlfyhAsMfJMhNrG00575V...lSTS7qsYcw]



گام پنجم : در پنجره ی بعدی که باز می شود شما " Add Firebase to your Android app " را انتخاب کنید.

[عکس: images?q=tbn:ANd9GcSyruZq_WoUMi31YRNuUbL...2jdu3KNxri]



گام ششم : مرحله ی مهمی هستش. در اینجا شما با 3 کادر رو به رو هستید . که باید در کادر اول به دقت پکیج نیم خود را از اندروید استودیو اینجا بنویسید.
در کادر دوم نامی را برای اپ خود انتخاب کنید.
و اما در کادر سوم که " Debug signing certificate SHA-1 " هست را طبق این لینک به دست آورید و در اینجا قرار بدید.


[عکس: images?q=tbn:ANd9GcR3khtWRDdMIvmPuAVD6H_...U-SNwq8bfQ]


گام هفتم : بعد از این مرحله , پنجره ی هدایت شما و دانلود فایل google-service.json و هم چنین طریقه ی استفاده از آن را به شما گفته...
شما این فایل رو دانلود کنید با کلیک روی اون دکمه و اون رو بردارید و مانند این لینک آن را در پروژه ی اندروید استودیو قرار بدید.


[عکس: images?q=tbn:ANd9GcTKiXsTUcf9hYZPna7n0Sw...453N97Gkjm]
گام هشتم : افزودن لایبرری ها و پلاگین و ... به پروژه .
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 را انتخاب کنید و به کاربران خود پیام بفرستید.

[عکس: firebase-send-notification-3.png]

و SEND MESSAGE را انتخاب کنید و تمام !
خب تمامی کدهاش این بود . شما می تونید این کد ها که در واقع دوتا کلاس هستن را در پروژه های خود اضافه کنید و استفاده کنید.
ولی باید پیش نیاز هاشو که براتون گفتم رو اوکی کنید.
من یه پروژه ی کامل با استفاده از رتروفیت و فایربیس ساختم و اون را در گیت هابم گذاشتم. اینم لینک پروژه ی من در گیت هاب !
امیدوارم واستون مفید باشه  Heart
و ممنون بابت همراهی شما با این پست   Smile 
موفق باشید Cool
با تشکر از توضیحات شما
اگه از قسمت Tools و بعد Firebase داخل اندروید استودیو بیایم و با یک جیمیل کاکنت بشیم به فایربیس ، نیازی به انجام مراحی دوم تا ششم نیست درسته؟
(ضمن اینکه باید حتما وی پی ان روشن باشه بعد ، بجای گامهای 1 تا 6 ، مراحلی که داخل اندروید استودیو و بعد وقتی سایت فایربیس رو باز میکنه باید طی کنیم فقط)

سوال دوم:
گام نهم دهو و یازدهم باری چی هستش؟ بدون اضافه کردن این کلاسها میشه نوتیفیکیشن ارسال کرد