رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام دوستان، در این بحث قراره Firebase Cloud Messaging رو آموزش بدیم. این بار ما درباره (Firebase Cloud Messaging (FCM بحث خواهیم کرد. ما از Firebase برای اضافه کردن cloud messaging در برنامه اندروید استفاده خواهیم کرد.

  • Firebase Cloud Messing چیست؟

Firebase Cloud Messaging یک API قدرتمند است که به شما اجازه می دهد پیام ها را به صورت قابل اعتماد و مستقل از پلتفرمی که در حال توسعه است، ارسال کنید. با استفاده از FCM، توسعه دهندگان می توانند به کاربران اطلاع دهند که داده های جدید برای همگام سازی و ارسال پیام های اطلاع رسانی در دسترس هستند. این برای آزمایش، ارسال پیام های بازاریابی و تعامل بسیار مفید است. 

نکته : ما می توانیم از Firebase Cloud Message برای ارسال پیام های فوری حداکثر تا 4 کیلوبایت استفاده کنیم.

یک پیاده سازی معمول از سیستم Firebase Cloud Messaging شامل یک سرور برنامه است که با FCM با استفاده از پروتکل HTTP یا XMPP و یک برنامه سرویس گیرنده ارتباط برقرار می کند. پیام ها و اعلان ها را می توان به برنامه مشتری با استفاده از سرور برنامه یا کنسول اطلاعیه های Firebase ارسال کرد. 

در این آموزش ما یک برنامه ساده پیامرسان اندروید firebase ایجاد خواهد کرد که کاربر در مورد firebase android قابلیت ورود به سیستم را ایجاد خواهد کرد. این پست به شما کمک می کند تا با یکپارچه سازی Firebase Cloud Messaging به اندروید کمک کنید.

 

  • اضافه کردن Firebase Cloud Messaging

برای اضافه کردن FCM به برنامه خود ،باید مراحل زیر را دنبال کنید:

به Firebase وب سایت firebase.google.com بروید و یک حساب کاربری firebase برای شروع ایجاد کنید. به کنسول Firebase بروید و با کلیک روی دکمه «ایجاد پروژه جدید»، همانطور که در زیر نشان داده شده، یک پروژه جدید ایجاد کنید.

firebase1.png.cf5e1ebb1332276a896814cda9766a65.png

 

نام پروژه و کشور شما را در حال حاضر در آن قرار دهید، پس از اتمام کار روی دکمه «ایجاد پروژه» کلیک کنید.

fcm2.png.9f2e16030be828596ce7108ac1354ee2.png

 

در صفحه بعدی «افزودن Firebase به برنامه Android خود» را انتخاب کنید و سپس جزئیات مانند نام چکیج برنامه - SHA-1 key را وارد کنید.

اگر مطمئن نیستید که چگونه اثر  SHA-1 را تولید کنید، به این آموزش مراجعه کنید.

fcm4.png.81b4c64722eb21c66c29b0f0914a9f7d.png

 

 فایل google-services.json را دانلود کنید. ما آن را بعد به برنامه اندروید خود اضافه خواهیم کرد.

 

  • پیش نیازهای Firebase Cloud Messaging:

Android Studio روی کامپیوتر شما نصب شده (یونیکس یا ویندوز). برای کار با Firebase باید Android Studio 1.5 یا بالاتر نصب کنید.همچنین آخرین سرویس SDK گوگل بازی را از طریق Android SDK Manager دانلود کنید.

 دستگاه اندرویدی (Smartphone or Tablet) با Android Studio پیکربندی شده باشد. دستگاه اندروید باید از (Android 2.3 (Gingerbread یا جدیدتر و خدمات Google Play 9.2.0 یا جدیدتر استفاده کند.

Firebase SDK باید به پروژه اندروید اضافه شود،  Firebase Android Tutorial Part 1 - Getting Started

 

  • افزودن Permissions  و  Dependencies

پس از همگام سازی Gradle این پروژه، فایل google-services.json را به برنامه پروژه اضافه کنید

firebase5.png.1c4fa448c2230eb5d751b781c3aac91b.png

 

 

از آنجا که ما نیاز به اتصال به شبکه داریم مجوز اینترنت را در فایل AndroidManifest.xml اضافه می کنیم. همچنین هشدار لرزش را اضافه کنید در هنگام دریافت notification .

AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>

 

همچنین برای خدماتی که FirebaseMessagingService را ارائه می دهد برای مدیریت پیام پس از دریافت اعلان ها در برنامه ها در پس زمینه service هارا اضافه کنید.  برای دریافت اعلانها در برنامه  این کاملا ضروری است وقتی برنامه فعال نیست notification به کاربر اعلام شود.

<service
    android:name=".MyAndroidFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

 

اضافه کردن یک ورودی برای یک سرویس که FirebaseInstanceIdService را ارائه می دهد.

<service
    android:name=".MyAndroidFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>

 

 

همچنین یک ورودی برای یک  activity result  اضافه کنید، کاربر با کلیک کردن بر روی اعلان به این اکتیویتی بر می گردد.

<activity android:name=".ResultActivity"/>

 

در پایان  فایل AndroidManifest.xml به صورت زیر خواهد بود:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.androidtutorialpoint.firebasecloudmessagingtutorial">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
 
    <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>
        <activity android:name=".ResultActivity"/>
        <service
            android:name=".MyAndroidFirebaseMsgService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
        <service
            android:name=".MyAndroidFirebaseInstanceIdService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
    </application>
</manifest>

 

در حال حاضر در پروژه خود build.gridle  را از دایرکتوری اصلی پروژه باز کنید و dependency زیر را اضافه کنید.

build.gradle

classpath 'com.google.gms:google-services:3.0.0'

 

بعد،  build.gridle برنامه خود را باز کنید و در آن مقدار زیر را اضافه کنید.

build.gradle

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

 

dependency های زیر را در قسمت dependency build.gridle برنامه خود اضافه کنید

compile 'com.google.android.gms:play-services:9.2.0'
compile 'com.google.firebase:firebase-messaging:9.2.1'

 

اضافه کردن قابلیت ها

یک کلاس جدید جاوا MyAndroidFirebaseMsgService ایجاد کنید و کد زیر را اضافه کنید.
این  کلاس یک سرویس است که FirebaseMessagingService را ارائه می دهد.

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;
 
public class MyAndroidFirebaseMsgService extends FirebaseMessagingService {
    private static final String TAG = "MyAndroidFCMService";
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        //Log data to Log Cat
        Log.d(TAG, "From: " + remoteMessage.getFrom());
        Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
        //create notification
        createNotification(remoteMessage.getNotification().getBody());
    }
 
    private void createNotification( String messageBody) {
        Intent intent = new Intent( this , ResultActivity. class );
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent resultIntent = PendingIntent.getActivity( this , 0, intent,
        PendingIntent.FLAG_ONE_SHOT);
 
        Uri notificationSoundURI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder( this)
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setContentTitle("Android Tutorial Point FCM Tutorial")
                        .setContentText(messageBody)
                        .setAutoCancel( true )
                        .setSound(notificationSoundURI)
                        .setContentIntent(resultIntent);
 
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 
        notificationManager.notify(0, mNotificationBuilder.build());
    }
}

 

در دریافت پیام متد () onMessageReceived صدا زده می شود.

fcm11.png.1092e1c536e8a83efd661370f4ead3cc.png

ما از NotificationCompat.Builder استفاده می کنیم تا یک اعلان جدید با صدای اطلاع رسانی پیش فرض ایجاد کنیم و نتایج به ResultActivity منتقل می شود.

 

ایجاد کلاس MyAndroidFirebaseInstanceIdService  و اضافه کردن کد زیر. این کلاس هم یک سرویس است که FirebaseInstanceIdService را ارائه می دهد.این قسمت اطمینان میدهد که پیام ارسال شده به دستگاه های خاص موفقیت آمیز بوده است.

import android.util.Log;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;
 
public class MyAndroidFirebaseInstanceIdService extends FirebaseInstanceIdService {
 
    private static final String TAG = "MyAndroidFCMIIDService";
 
    @Override
    public void onTokenRefresh() {
        //Get hold of the registration token
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        //Log the token
        Log.d(TAG, "Refreshed token: " + refreshedToken);
    }
    private void sendRegistrationToServer(String token) {
        //Implement this method if you want to store the token on your server
    }
}

 

در activity_main.xml  کد زیر را اضافه کنید. ما تنها یک TextView فقط برای نمایش نام اکتیویتی نیاز داریم.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">
 
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:text="Welcome to Main Activity"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:textStyle="bold"
        android:layout_marginTop="100dp"
        android:textAlignment="center" />
</LinearLayout>
MainActivity.java


package com.androidtutorialpoint.firebasecloudmessagingtutorial;
 
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);
    }
}

 

یک اکتیویتی جدید به نام ResultActivity.java ایجاد کنید و کد زیر را در آن قرار دهید.

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
 
public class ResultActivity extends AppCompatActivity {
    private TextView textView ;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView)findViewById(R.id.textView1);
        textView.setText("Welcome to the Result Activity");
    }
}

 

ما از اکتیویتی  activity_main.xml برای ارسال نتیجه به اکتیویتی  (activity result) استفاده  میکنیم . این اکتیویتی زمانی صدا زده می شود که کاربر بر روی اعلان دریافت شده کلیک کند.

 

اکنون برنامه کامل شده است، ما با ارسال یک اعلان از پانل اعلان های Firebase، برنامه را تست می کنیم.

fcm8.thumb.png.fad52a9d4ad3a4d0084929b64f20e5d0.png

 

 

fcm9.thumb.jpg.8d5205cc618b573515d1f6f608bebf85.jpg

 

 

fcm11.png.1092e1c536e8a83efd661370f4ead3cc.png

 

 

 

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط Farzad Sarseifi
      سمینار آموزشی پیاده سازی FireBase در اندروید
      سمینار رایگان آموزشی پیاده سازی  Firebaseدر اپلیکیشن های اندروید
      لینک ثبت نام در ایوند :
      https://evnd.co/6USla
       
       
       
       
    • توسط behzad09
      سلام به همه دوستان. خسته نباشید
      خیلی سریع میرم سر اصل مطلب. من تازه وارد دنیای برنامه نویسی اندروید شدم و فعلاً با ویرایش و ... شروع کردم.
      در حال حاضر به شدت با یک مشکل رو به رو هستم. یک برنامه هست که می خوام به هیچ عنوان پوش نوتیفیکیشن نداشته باشه. هر از گاهی از طریق سازنده نوتیفیکیشن ارسال میشه و من می خوام این نوتیفیکیشن ها رو با ویرایش خود فایل APK حذف کنم و فایل ویرایش شده رو به اشتراک بذارم. مطمئن نیستم اما فکر می کنم سازنده از طریق پنل سیستم Firebase گوگل این اعلانات رو ارسال می کنه. توی فولدر smali فایل APK این پوشه وجود داره اما حذف کردن خود پوشه یا بعضی از فایل های داخلش منجر به این میشه که برنامه درست اجرا نشه و Unexpected error بده.
      از متخصصین فعال توی برنامه نویسی اندروید که تو این انجمن هستن خواهش می کنم به من یه راهی بگن که چطور این قضیه رو حل کنم. مسلماً یک فایل یا یک پوشه یا شاید یک کد خاص باشه که با تغییر یا حذفش میشه این مسئله رو حل کرد. خیلی ممنون میشم اگر هر کسی که می تونه منو راهنمایی کنه.
  • فایل

×
×
  • اضافه کردن...