یک برنامه مشتری Firebase Cloud Messaging با Unity راه اندازی کنید

برای نوشتن برنامه مشتری Firebase Cloud Messaging با Unity، از Firebase Cloud Messaging API استفاده کنید. Unity SDK هم برای اندروید و هم برای اپل کار می کند و برای هر پلتفرم نیاز به تنظیمات اضافی است.

قبل از شروع

پیش نیازها

  • Unity 2021 LTS یا بالاتر را نصب کنید. پشتیبانی از Unity 2020 منسوخ شده تلقی می شود و پس از نسخه اصلی بعدی دیگر فعالانه پشتیبانی نخواهد شد. نسخه های قبلی نیز ممکن است سازگار باشند، اما به طور فعال پشتیبانی نمی شوند.

  • (فقط پلتفرم های اپل) موارد زیر را نصب کنید:

    • Xcode 13.3.1 یا بالاتر
    • CocoaPods 1.12.0 یا بالاتر
  • مطمئن شوید که پروژه یونیتی شما با این شرایط مطابقت دارد:

    • برای iOS - iOS 13 یا بالاتر را هدف قرار می دهد
    • برای tvOS - tvOS 13 یا بالاتر را هدف قرار می دهد
    • برای Android - API سطح 21 (Lollipop) یا بالاتر را هدف قرار می دهد
  • برای اجرای پروژه Unity خود یک دستگاه راه اندازی کنید یا از یک شبیه ساز استفاده کنید.

    • برای iOS یا tvOS — یک دستگاه فیزیکی برای اجرای برنامه خود راه اندازی کنید و این کارها را کامل کنید:

      • یک کلید تأیید اعتبار Apple Push Notification برای حساب Apple Developer خود دریافت کنید.
      • Push Notifications را در XCode در قسمت App > Capabilities فعال کنید.
    • برای اندرویدشبیه سازها باید از یک تصویر شبیه ساز با Google Play استفاده کنند.

اگر قبلاً پروژه یونیتی ندارید و فقط می‌خواهید یک محصول Firebase را امتحان کنید، می‌توانید یکی از نمونه‌های شروع سریع ما را دانلود کنید.

مرحله 1: یک پروژه Firebase ایجاد کنید

قبل از اینکه بتوانید Firebase را به پروژه Unity خود اضافه کنید، باید یک پروژه Firebase ایجاد کنید تا به پروژه Unity خود متصل شوید. برای کسب اطلاعات بیشتر در مورد پروژه های Firebase، از Understand Firebase Projects دیدن کنید.

  1. در کنسول Firebase ، روی افزودن پروژه کلیک کنید.

    • برای افزودن منابع Firebase به پروژه Google Cloud موجود ، نام پروژه آن را وارد کنید یا آن را از منوی کشویی انتخاب کنید.

    • برای ایجاد یک پروژه جدید، نام پروژه مورد نظر را وارد کنید. همچنین می توانید به صورت اختیاری شناسه پروژه نمایش داده شده در زیر نام پروژه را ویرایش کنید.

  2. در صورت درخواست، شرایط Firebase را بررسی کرده و بپذیرید.

  3. روی Continue کلیک کنید.

  4. (اختیاری) Google Analytics برای پروژه خود راه اندازی کنید، که به شما امکان می دهد با استفاده از هر یک از محصولات Firebase زیر تجربه ای بهینه داشته باشید:

    یا یک حساب Google Analytics موجود را انتخاب کنید یا یک حساب جدید ایجاد کنید.

    اگر حساب جدیدی ایجاد می‌کنید، مکان گزارش Analytics خود را انتخاب کنید، سپس تنظیمات اشتراک‌گذاری داده و شرایط Google Analytics را برای پروژه خود بپذیرید.

  5. روی ایجاد پروژه (یا افزودن Firebase ، اگر از پروژه Google Cloud موجود استفاده می کنید) کلیک کنید.

Firebase به طور خودکار منابع پروژه Firebase شما را فراهم می کند. پس از تکمیل فرآیند، به صفحه نمای کلی پروژه Firebase خود در کنسول Firebase هدایت خواهید شد.

مرحله 2: برنامه خود را در Firebase ثبت کنید

می توانید یک یا چند برنامه یا بازی را برای اتصال به پروژه Firebase خود ثبت کنید.

  1. به کنسول Firebase بروید.

  2. در مرکز صفحه نمای کلی پروژه، روی نماد Unity ( ) کلیک کنید تا گردش کار راه اندازی شود.

    اگر قبلاً برنامه‌ای را به پروژه Firebase خود اضافه کرده‌اید، روی افزودن برنامه کلیک کنید تا گزینه‌های پلتفرم نمایش داده شوند.

  3. هدف ساخت پروژه یونیتی خود را که می‌خواهید ثبت کنید انتخاب کنید، یا حتی می‌توانید هر دو هدف را هم‌اکنون ثبت کنید.

  4. شناسه(های) پلتفرم خاص پروژه Unity خود را وارد کنید.

    • برای iOS — شناسه iOS پروژه Unity خود را در قسمت ID بسته نرم افزاری iOS وارد کنید.

    • برای اندروید — شناسه اندروید پروژه Unity خود را در قسمت نام بسته اندروید وارد کنید.
      اصطلاحات نام بسته و شناسه برنامه اغلب به جای یکدیگر استفاده می شوند.

    پروژه Unity خود را در Unity IDE باز کنید، سپس به بخش تنظیمات برای هر پلتفرم بروید:

    • برای iOS - به Build Settings > iOS بروید.

    • برای Android - به Android > Player Settings > Other Settings بروید.

    شناسه پروژه Unity شما مقدار Bundle Identifier است (شناسه مثال: com.yourcompany.yourproject ).

  5. (اختیاری) نام مستعار پلتفرم خاص پروژه Unity خود را وارد کنید.
    این نام‌های مستعار، شناسه‌های راحتی هستند و فقط در کنسول Firebase برای شما قابل مشاهده هستند.

  6. روی ثبت برنامه کلیک کنید.

مرحله 3: فایل های پیکربندی Firebase را اضافه کنید

  1. فایل(های) پیکربندی Firebase مخصوص پلتفرم خود را در گردش کار راه اندازی کنسول Firebase دریافت کنید.

    • برای iOSروی دانلود GoogleService-Info.plist کلیک کنید.

    • برای Androidروی Download google-services.json کلیک کنید.

    • فایل پیکربندی Firebase حاوی شناسه‌های منحصر به فرد، اما غیر مخفی برای پروژه شما است. برای کسب اطلاعات بیشتر در مورد این فایل پیکربندی، از Understand Firebase Projects دیدن کنید.

    • می‌توانید فایل پیکربندی Firebase خود را دوباره در هر زمانی دانلود کنید.

    • مطمئن شوید که نام فایل پیکربندی با کاراکترهای اضافی مانند (2) اضافه نشده باشد.

  2. پنجره Project پروژه Unity خود را باز کنید، سپس فایل(های) پیکربندی خود را به پوشه Assets منتقل کنید.

  3. در کنسول Firebase ، در گردش کار راه اندازی، روی Next کلیک کنید.

مرحله 4: Firebase Unity SDK را اضافه کنید

  1. در کنسول Firebase ، روی Download Firebase Unity SDK کلیک کنید، سپس SDK را در جایی مناسب از حالت فشرده خارج کنید.

    • می‌توانید Firebase Unity SDK را دوباره در هر زمانی دانلود کنید.

    • Firebase Unity SDK مخصوص پلتفرم نیست.

  2. در پروژه Unity باز خود، به Assets > Import Package > Custom Package بروید.

  3. از SDK خارج‌شده، محصولات Firebase پشتیبانی‌شده را که می‌خواهید در برنامه خود استفاده کنید، انتخاب کنید.

    برای تجربه بهینه با Firebase Cloud Messaging ، توصیه می کنیم Google Analytics در پروژه خود فعال کنید . همچنین، به عنوان بخشی از راه‌اندازی Analytics ، باید بسته Firebase برای Analytics را به برنامه خود اضافه کنید.

    • بسته Firebase را برای Google Analytics اضافه کنید: FirebaseAnalytics.unitypackage
    • بسته را برای Firebase Cloud Messaging اضافه کنید: FirebaseMessaging.unitypackage

    بسته را برای Firebase Cloud Messaging اضافه کنید: FirebaseMessaging.unitypackage

  4. در پنجره Import Unity Package ، روی Import کلیک کنید.

  5. در کنسول Firebase ، در گردش کار راه اندازی، روی Next کلیک کنید.

مرحله 5: الزامات نسخه خدمات Google Play را تأیید کنید

برخی از محصولات موجود در Firebase Unity SDK برای Android به Google Play services نیاز دارند. بیاموزید که کدام محصولات این وابستگی را دارند . قبل از استفاده از آن محصولات Google Play services باید به‌روز باشند.

using دستورات و کد مقداردهی اولیه در ابتدای برنامه خود، موارد زیر را اضافه کنید. می‌توانید قبل از فراخوانی روش‌های دیگر در SDK، Google Play services به نسخه مورد نیاز بررسی کرده و به‌صورت اختیاری به‌روزرسانی کنید.

using Firebase.Extensions;
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
       app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

پروژه Unity شما برای استفاده از Firebase ثبت و پیکربندی شده است.

کلید احراز هویت APN خود را برای پشتیبانی اپل آپلود کنید

کلید احراز هویت APN خود را در Firebase آپلود کنید. اگر از قبل یک کلید تأیید اعتبار APN ندارید، مطمئن شوید که در مرکز اعضای برنامه‌نویس Apple ایجاد کرده‌اید.

  1. در داخل پروژه خود در کنسول Firebase ، نماد چرخ دنده را انتخاب کنید، تنظیمات پروژه را انتخاب کنید و سپس برگه Cloud Messaging را انتخاب کنید.

  2. در کلید احراز هویت APN در پیکربندی برنامه iOS ، روی دکمه آپلود کلیک کنید.

  3. به مکانی که کلید خود را در آن ذخیره کرده اید بروید، آن را انتخاب کنید و روی Open کلیک کنید. شناسه کلید را برای کلید اضافه کنید (در مرکز اعضای برنامه نویس اپل موجود است) و روی آپلود کلیک کنید.

اعلان‌های فشاری را در پلتفرم‌های اپل فعال کنید

مرحله ۱: چارچوب اعلان‌های کاربر را اضافه کنید

  1. روی پروژه در Xcode کلیک کنید، سپس برگه General را از ناحیه ویرایشگر انتخاب کنید.

  2. به پایین به Frameworks and Libraries پیوند داده شده ، سپس روی دکمه + کلیک کنید تا یک چارچوب اضافه شود.

  3. در پنجره ای که ظاهر می شود، به UserNotifications.framework بروید، روی آن ورودی کلیک کنید، سپس روی افزودن کلیک کنید.

مرحله 2: اعلان‌های فشاری را فعال کنید

  1. روی پروژه در Xcode کلیک کنید، سپس زبانه قابلیت ها را از ناحیه ویرایشگر انتخاب کنید.

  2. Push Notifications را روی On قرار دهید.

  3. به سمت پایین به حالت‌های پس‌زمینه بروید، سپس آن را به روشن تغییر دهید.

  4. کادر بررسی اعلان‌های از راه دور را در حالت‌های پس‌زمینه انتخاب کنید.

Firebase Cloud Messaging راه اندازی کنید

کتابخانه Firebase Cloud Message هنگام اضافه کردن کنترل کننده برای رویدادهای TokenReceived یا MessageReceived مقداردهی اولیه می شود.

پس از مقداردهی اولیه، یک نشانه ثبت نام برای نمونه برنامه مشتری درخواست می شود. برنامه توکن را با رویداد OnTokenReceived دریافت می کند، که باید برای استفاده بعدی ذخیره شود. اگر می‌خواهید این دستگاه خاص را برای پیام‌ها هدف قرار دهید، به این نشانه نیاز دارید.

علاوه بر این، اگر می خواهید پیام های دریافتی را دریافت کنید، باید برای رویداد OnMessageReceived ثبت نام کنید.

کل تنظیمات به صورت زیر است:

public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
  UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}

public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}

پیکربندی یک فعالیت نقطه ورودی Android

در Android، Firebase Cloud Messaging همراه با یک فعالیت نقطه ورودی سفارشی است که جایگزین UnityPlayerActivity پیش‌فرض می‌شود. اگر از یک نقطه ورودی سفارشی استفاده نمی کنید، این جایگزینی به طور خودکار انجام می شود و نباید هیچ اقدام اضافی انجام دهید. برنامه‌هایی که از Activity نقطه ورودی پیش‌فرض استفاده نمی‌کنند یا Assets/Plugins/AndroidManifest.xml خود را ارائه می‌کنند به پیکربندی اضافی نیاز دارند.

افزونه Firebase Cloud Messaging Unity در اندروید همراه با دو فایل اضافی است:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar حاوی فعالیتی به نام MessagingUnityPlayerActivity است که جایگزین UnityPlayerActivity استاندارد می شود.
  • Assets/Plugins/Android/AndroidManifest.xml به برنامه دستور می دهد که از MessagingUnityPlayerActivity به عنوان نقطه ورود به برنامه استفاده کند.

این فایل‌ها به این دلیل ارائه می‌شوند که UnityPlayerActivity پیش‌فرض، انتقال چرخه حیات فعالیت onStop ، onRestart را انجام نمی‌دهد یا onNewIntent را که برای Firebase Cloud Messaging برای مدیریت صحیح پیام‌های دریافتی لازم است، پیاده‌سازی نمی‌کند.

پیکربندی یک فعالیت نقطه ورودی سفارشی

اگر برنامه شما از UnityPlayerActivity پیش‌فرض استفاده نمی‌کند، باید AndroidManifest.xml ارائه شده را حذف کنید و اطمینان حاصل کنید که فعالیت سفارشی شما به درستی تمام انتقال‌های چرخه حیات فعالیت Android را انجام می‌دهد (نمونه‌ای از نحوه انجام این کار در زیر نشان داده شده است). اگر فعالیت سفارشی شما UnityPlayerActivity گسترش دهد، می‌توانید به جای آن com.google.firebase.MessagingUnityPlayerActivity را گسترش دهید که همه روش‌های لازم را اجرا می‌کند.

اگر از یک فعالیت سفارشی استفاده می‌کنید و com.google.firebase.MessagingUnityPlayerActivity را گسترش نمی‌دهید، باید قطعه‌های زیر را در فعالیت خود بگنجانید.

/**
 * Workaround for when a message is sent containing both a Data and Notification payload.
 *
 * When the app is in the background, if a message with both a data and notification payload is
 * received the data payload is stored on the Intent passed to onNewIntent. By default, that
 * intent does not get set as the Intent that started the app, so when the app comes back online
 * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so
 * that it sends the intent to the MessageForwardingService which forwards the message to the
 * FirebaseMessagingService which in turn sends the message to the application.
 */
@Override
protected void onNewIntent(Intent intent) {
  Intent message = new Intent(this, MessageForwardingService.class);
  message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
  message.putExtras(intent);
  message.setData(intent.getData());
  // For older versions of Firebase C++ SDK (< 7.1.0), use `startService`.
  // startService(message);
  MessageForwardingService.enqueueWork(this, message);
}

/**
 * Dispose of the mUnityPlayer when restarting the app.
 *
 * This ensures that when the app starts up again it does not start with stale data.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
  if (mUnityPlayer != null) {
    mUnityPlayer.quit();
    mUnityPlayer = null;
  }
  super.onCreate(savedInstanceState);
}

نسخه‌های جدید Firebase C++ SDK (7.1.0 به بعد) از JobIntentService استفاده می‌کنند که نیاز به تغییرات بیشتری در فایل AndroidManifest.xml دارد.

<service android:name="com.google.firebase.messaging.MessageForwardingService"
     android:permission="android.permission.BIND_JOB_SERVICE"
     android:exported="false" >
</service>

نکته ای در مورد تحویل پیام در اندروید

وقتی برنامه اصلاً اجرا نمی‌شود و کاربر روی یک اعلان ضربه می‌زند، پیام به‌طور پیش‌فرض از طریق تماس‌های FCM داخلی ارسال نمی‌شود. در این مورد، بارهای پیام از طریق یک Intent که برای شروع برنامه استفاده می شود دریافت می شود.

پیام‌های دریافت شده در حالی که برنامه در پس‌زمینه است، محتوای فیلد اعلان آن‌ها برای پر کردن اعلان سینی سیستم استفاده می‌شود، اما این محتوای اعلان به FCM مخابره نمی‌شود. یعنی FirebaseMessage.Notification پوچ خواهد بود.

به طور خلاصه:

وضعیت برنامه اطلاع رسانی داده ها هر دو
پیش زمینه Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
پس زمینه سینی سیستم Firebase.Messaging.FirebaseMessaging.MessageReceived اعلان: سینی سیستم
داده: در موارد اضافی قصد.

جلوگیری از مقداردهی اولیه خودکار

FCM یک نشانه ثبت نام برای هدف گذاری دستگاه تولید می کند. هنگامی که یک نشانه تولید می شود، کتابخانه شناسه و داده های پیکربندی را در Firebase آپلود می کند. اگر می‌خواهید قبل از استفاده از توکن، یک انتخاب صریح دریافت کنید، می‌توانید با غیرفعال کردن FCM (و در Android، Analytics) از تولید در زمان پیکربندی جلوگیری کنید. برای انجام این کار، یک مقدار فراداده به Info.plist خود (نه GoogleService-Info.plist خود) در Apple یا AndroidManifest.xml خود در Android اضافه کنید:

<?xml version="1.0" encoding="utf-8"?>
<application>
  <meta-data android:name="firebase_messaging_auto_init_enabled"
             android:value="false" />
  <meta-data android:name="firebase_analytics_collection_enabled"
             android:value="false" />
</application>
FirebaseMessagingAutoInitEnabled = NO

برای فعال کردن مجدد FCM، می توانید یک تماس در زمان اجرا برقرار کنید:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

پس از تنظیم، این مقدار در سراسر راه اندازی مجدد برنامه باقی می ماند.

FCM اجازه می دهد تا پیام هایی حاوی پیوند عمیق به برنامه شما ارسال شود. برای دریافت پیام‌هایی که حاوی پیوند عمیق هستند، باید یک فیلتر قصد جدید به فعالیتی اضافه کنید که پیوندهای عمیق را برای برنامه شما مدیریت می‌کند. فیلتر قصد باید پیوندهای عمیق دامنه شما را بگیرد. اگر پیام های شما حاوی پیوند عمیق نیستند، این پیکربندی ضروری نیست. در AndroidManifest.xml:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="http"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="https"/>
</intent-filter>

همچنین می توان برای انعطاف پذیرتر کردن فیلتر قصد، یک علامت عام مشخص کرد. به عنوان مثال:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="*.example.com" android:scheme="http"/>
  <data android:host="*.example.com" android:scheme="https"/>
</intent-filter>

وقتی کاربران بر روی یک اعلان حاوی پیوندی به طرح و میزبانی که مشخص کرده‌اید ضربه می‌زنند، برنامه شما فعالیت را با این فیلتر قصد شروع می‌کند تا پیوند را مدیریت کند.

مراحل بعدی

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

برای افزودن سایر رفتارهای پیشرفته تر به برنامه خود، به راهنمای ارسال پیام از سرور برنامه مراجعه کنید:

به خاطر داشته باشید که برای استفاده از این ویژگی ها به پیاده سازی سرور نیاز دارید.

،

برای نوشتن برنامه مشتری Firebase Cloud Messaging با Unity، از Firebase Cloud Messaging API استفاده کنید. Unity SDK هم برای اندروید و هم برای اپل کار می کند و برای هر پلتفرم نیاز به تنظیمات اضافی است.

قبل از شروع

پیش نیازها

  • Unity 2021 LTS یا بالاتر را نصب کنید. پشتیبانی از Unity 2020 منسوخ شده تلقی می شود و پس از نسخه اصلی بعدی دیگر فعالانه پشتیبانی نخواهد شد. نسخه های قبلی نیز ممکن است سازگار باشند، اما به طور فعال پشتیبانی نمی شوند.

  • (فقط پلتفرم های اپل) موارد زیر را نصب کنید:

    • Xcode 13.3.1 یا بالاتر
    • CocoaPods 1.12.0 یا بالاتر
  • مطمئن شوید که پروژه یونیتی شما با این شرایط مطابقت دارد:

    • برای iOS - iOS 13 یا بالاتر را هدف قرار می دهد
    • برای tvOS - tvOS 13 یا بالاتر را هدف قرار می دهد
    • برای Android - API سطح 21 (Lollipop) یا بالاتر را هدف قرار می دهد
  • برای اجرای پروژه Unity خود یک دستگاه راه اندازی کنید یا از یک شبیه ساز استفاده کنید.

    • برای iOS یا tvOS — یک دستگاه فیزیکی برای اجرای برنامه خود راه اندازی کنید و این کارها را کامل کنید:

      • یک کلید تأیید اعتبار Apple Push Notification برای حساب Apple Developer خود دریافت کنید.
      • Push Notifications را در XCode در قسمت App > Capabilities فعال کنید.
    • برای اندرویدشبیه سازها باید از یک تصویر شبیه ساز با Google Play استفاده کنند.

اگر قبلاً پروژه یونیتی ندارید و فقط می‌خواهید یک محصول Firebase را امتحان کنید، می‌توانید یکی از نمونه‌های شروع سریع ما را دانلود کنید.

مرحله 1: یک پروژه Firebase ایجاد کنید

قبل از اینکه بتوانید Firebase را به پروژه Unity خود اضافه کنید، باید یک پروژه Firebase ایجاد کنید تا به پروژه Unity خود متصل شوید. برای کسب اطلاعات بیشتر در مورد پروژه های Firebase، از Understand Firebase Projects دیدن کنید.

  1. در کنسول Firebase ، روی افزودن پروژه کلیک کنید.

    • برای افزودن منابع Firebase به پروژه Google Cloud موجود ، نام پروژه آن را وارد کنید یا آن را از منوی کشویی انتخاب کنید.

    • برای ایجاد یک پروژه جدید، نام پروژه مورد نظر را وارد کنید. همچنین می توانید به صورت اختیاری شناسه پروژه نمایش داده شده در زیر نام پروژه را ویرایش کنید.

  2. در صورت درخواست، شرایط Firebase را بررسی کرده و بپذیرید.

  3. روی Continue کلیک کنید.

  4. (اختیاری) Google Analytics برای پروژه خود راه اندازی کنید، که به شما امکان می دهد با استفاده از هر یک از محصولات Firebase زیر تجربه ای بهینه داشته باشید:

    یا یک حساب Google Analytics موجود را انتخاب کنید یا یک حساب جدید ایجاد کنید.

    اگر حساب جدیدی ایجاد می‌کنید، مکان گزارش Analytics خود را انتخاب کنید، سپس تنظیمات اشتراک‌گذاری داده و شرایط Google Analytics را برای پروژه خود بپذیرید.

  5. روی ایجاد پروژه (یا افزودن Firebase ، اگر از پروژه Google Cloud موجود استفاده می کنید) کلیک کنید.

Firebase به طور خودکار منابع پروژه Firebase شما را فراهم می کند. پس از تکمیل فرآیند، به صفحه نمای کلی پروژه Firebase خود در کنسول Firebase هدایت خواهید شد.

مرحله 2: برنامه خود را در Firebase ثبت کنید

می توانید یک یا چند برنامه یا بازی را برای اتصال به پروژه Firebase خود ثبت کنید.

  1. به کنسول Firebase بروید.

  2. در مرکز صفحه نمای کلی پروژه، روی نماد Unity ( ) کلیک کنید تا گردش کار راه اندازی شود.

    اگر قبلاً برنامه‌ای را به پروژه Firebase خود اضافه کرده‌اید، روی افزودن برنامه کلیک کنید تا گزینه‌های پلتفرم نمایش داده شوند.

  3. هدف ساخت پروژه یونیتی خود را که می‌خواهید ثبت کنید انتخاب کنید، یا حتی می‌توانید هر دو هدف را هم‌اکنون ثبت کنید.

  4. شناسه(های) پلتفرم خاص پروژه Unity خود را وارد کنید.

    • برای iOS — شناسه iOS پروژه Unity خود را در قسمت ID بسته نرم افزاری iOS وارد کنید.

    • برای اندروید — شناسه اندروید پروژه Unity خود را در قسمت نام بسته اندروید وارد کنید.
      اصطلاحات نام بسته و شناسه برنامه اغلب به جای یکدیگر استفاده می شوند.

    پروژه Unity خود را در Unity IDE باز کنید، سپس به بخش تنظیمات برای هر پلتفرم بروید:

    • برای iOS - به Build Settings > iOS بروید.

    • برای Android - به Android > Player Settings > Other Settings بروید.

    شناسه پروژه Unity شما مقدار Bundle Identifier است (شناسه مثال: com.yourcompany.yourproject ).

  5. (اختیاری) نام مستعار پلتفرم خاص پروژه Unity خود را وارد کنید.
    این نام‌های مستعار، شناسه‌های راحتی هستند و فقط در کنسول Firebase برای شما قابل مشاهده هستند.

  6. روی ثبت برنامه کلیک کنید.

مرحله 3: فایل های پیکربندی Firebase را اضافه کنید

  1. فایل(های) پیکربندی Firebase مخصوص پلتفرم خود را در گردش کار راه اندازی کنسول Firebase دریافت کنید.

    • برای iOSروی دانلود GoogleService-Info.plist کلیک کنید.

    • برای Androidروی Download google-services.json کلیک کنید.

    • فایل پیکربندی Firebase حاوی شناسه‌های منحصر به فرد، اما غیر مخفی برای پروژه شما است. برای کسب اطلاعات بیشتر در مورد این فایل پیکربندی، از Understand Firebase Projects دیدن کنید.

    • می‌توانید فایل پیکربندی Firebase خود را دوباره در هر زمانی دانلود کنید.

    • مطمئن شوید که نام فایل پیکربندی با کاراکترهای اضافی مانند (2) اضافه نشده باشد.

  2. پنجره Project پروژه Unity خود را باز کنید، سپس فایل(های) پیکربندی خود را به پوشه Assets منتقل کنید.

  3. در کنسول Firebase ، در گردش کار راه اندازی، روی Next کلیک کنید.

مرحله 4: Firebase Unity SDK را اضافه کنید

  1. در کنسول Firebase ، روی Download Firebase Unity SDK کلیک کنید، سپس SDK را در جایی مناسب از حالت فشرده خارج کنید.

    • می‌توانید Firebase Unity SDK را دوباره در هر زمانی دانلود کنید.

    • Firebase Unity SDK مخصوص پلتفرم نیست.

  2. در پروژه Unity باز خود، به Assets > Import Package > Custom Package بروید.

  3. از SDK خارج‌شده، محصولات Firebase پشتیبانی‌شده را که می‌خواهید در برنامه خود استفاده کنید، انتخاب کنید.

    برای تجربه بهینه با Firebase Cloud Messaging ، توصیه می کنیم Google Analytics در پروژه خود فعال کنید . همچنین، به عنوان بخشی از راه‌اندازی Analytics ، باید بسته Firebase برای Analytics را به برنامه خود اضافه کنید.

    • بسته Firebase را برای Google Analytics اضافه کنید: FirebaseAnalytics.unitypackage
    • بسته را برای Firebase Cloud Messaging اضافه کنید: FirebaseMessaging.unitypackage

    بسته را برای Firebase Cloud Messaging اضافه کنید: FirebaseMessaging.unitypackage

  4. در پنجره Import Unity Package ، روی Import کلیک کنید.

  5. در کنسول Firebase ، در گردش کار راه اندازی، روی Next کلیک کنید.

مرحله 5: الزامات نسخه خدمات Google Play را تأیید کنید

برخی از محصولات موجود در Firebase Unity SDK برای Android به Google Play services نیاز دارند. بیاموزید که کدام محصولات این وابستگی را دارند . قبل از استفاده از آن محصولات Google Play services باید به‌روز باشند.

using دستورات و کد مقداردهی اولیه در ابتدای برنامه خود، موارد زیر را اضافه کنید. می‌توانید قبل از فراخوانی روش‌های دیگر در SDK، Google Play services به نسخه مورد نیاز بررسی کرده و به‌صورت اختیاری به‌روزرسانی کنید.

using Firebase.Extensions;
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
       app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

پروژه Unity شما برای استفاده از Firebase ثبت و پیکربندی شده است.

کلید احراز هویت APN خود را برای پشتیبانی اپل آپلود کنید

کلید احراز هویت APN خود را در Firebase آپلود کنید. اگر از قبل یک کلید تأیید اعتبار APN ندارید، مطمئن شوید که در مرکز اعضای برنامه‌نویس Apple ایجاد کرده‌اید.

  1. در داخل پروژه خود در کنسول Firebase ، نماد چرخ دنده را انتخاب کنید، تنظیمات پروژه را انتخاب کنید و سپس برگه Cloud Messaging را انتخاب کنید.

  2. در کلید احراز هویت APN در پیکربندی برنامه iOS ، روی دکمه آپلود کلیک کنید.

  3. به مکانی که کلید خود را در آن ذخیره کرده اید بروید، آن را انتخاب کنید و روی Open کلیک کنید. شناسه کلید را برای کلید اضافه کنید (در مرکز اعضای برنامه نویس اپل موجود است) و روی آپلود کلیک کنید.

اعلان‌های فشاری را در پلتفرم‌های اپل فعال کنید

مرحله ۱: چارچوب اعلان‌های کاربر را اضافه کنید

  1. روی پروژه در Xcode کلیک کنید، سپس برگه General را از ناحیه ویرایشگر انتخاب کنید.

  2. به پایین به Frameworks and Libraries پیوند داده شده ، سپس روی دکمه + کلیک کنید تا یک چارچوب اضافه شود.

  3. در پنجره ای که ظاهر می شود، به UserNotifications.framework بروید، روی آن ورودی کلیک کنید، سپس روی افزودن کلیک کنید.

مرحله 2: اعلان‌های فشاری را فعال کنید

  1. روی پروژه در Xcode کلیک کنید، سپس زبانه قابلیت ها را از ناحیه ویرایشگر انتخاب کنید.

  2. Push Notifications را روی On قرار دهید.

  3. به سمت پایین به حالت‌های پس‌زمینه بروید، سپس آن را به روشن تغییر دهید.

  4. کادر بررسی اعلان‌های از راه دور را در حالت‌های پس‌زمینه انتخاب کنید.

Firebase Cloud Messaging راه اندازی کنید

کتابخانه Firebase Cloud Message هنگام اضافه کردن کنترل کننده برای رویدادهای TokenReceived یا MessageReceived مقداردهی اولیه می شود.

پس از مقداردهی اولیه، یک نشانه ثبت نام برای نمونه برنامه مشتری درخواست می شود. برنامه توکن را با رویداد OnTokenReceived دریافت می کند، که باید برای استفاده بعدی ذخیره شود. اگر می‌خواهید این دستگاه خاص را برای پیام‌ها هدف قرار دهید، به این نشانه نیاز دارید.

علاوه بر این، اگر می خواهید پیام های دریافتی را دریافت کنید، باید برای رویداد OnMessageReceived ثبت نام کنید.

کل تنظیمات به صورت زیر است:

public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
  UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}

public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}

پیکربندی یک فعالیت نقطه ورودی Android

در Android، Firebase Cloud Messaging همراه با یک فعالیت نقطه ورودی سفارشی است که جایگزین UnityPlayerActivity پیش‌فرض می‌شود. اگر از یک نقطه ورودی سفارشی استفاده نمی کنید، این جایگزینی به طور خودکار انجام می شود و نباید هیچ اقدام اضافی انجام دهید. برنامه‌هایی که از Activity نقطه ورودی پیش‌فرض استفاده نمی‌کنند یا Assets/Plugins/AndroidManifest.xml خود را ارائه می‌کنند به پیکربندی اضافی نیاز دارند.

افزونه Firebase Cloud Messaging Unity در اندروید همراه با دو فایل اضافی است:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar حاوی فعالیتی به نام MessagingUnityPlayerActivity است که جایگزین UnityPlayerActivity استاندارد می شود.
  • Assets/Plugins/Android/AndroidManifest.xml به برنامه دستور می دهد که از MessagingUnityPlayerActivity به عنوان نقطه ورود به برنامه استفاده کند.

این فایل‌ها به این دلیل ارائه می‌شوند که UnityPlayerActivity پیش‌فرض، انتقال چرخه حیات فعالیت onStop ، onRestart را انجام نمی‌دهد یا onNewIntent را که برای Firebase Cloud Messaging برای مدیریت صحیح پیام‌های دریافتی لازم است، پیاده‌سازی نمی‌کند.

پیکربندی یک فعالیت نقطه ورودی سفارشی

اگر برنامه شما از UnityPlayerActivity پیش‌فرض استفاده نمی‌کند، باید AndroidManifest.xml ارائه شده را حذف کنید و اطمینان حاصل کنید که فعالیت سفارشی شما به درستی تمام انتقال‌های چرخه حیات فعالیت Android را انجام می‌دهد (نمونه‌ای از نحوه انجام این کار در زیر نشان داده شده است). اگر فعالیت سفارشی شما UnityPlayerActivity گسترش دهد، می‌توانید به جای آن com.google.firebase.MessagingUnityPlayerActivity را گسترش دهید که همه روش‌های لازم را اجرا می‌کند.

اگر از یک فعالیت سفارشی استفاده می‌کنید و com.google.firebase.MessagingUnityPlayerActivity را گسترش نمی‌دهید، باید قطعه‌های زیر را در فعالیت خود بگنجانید.

/**
 * Workaround for when a message is sent containing both a Data and Notification payload.
 *
 * When the app is in the background, if a message with both a data and notification payload is
 * received the data payload is stored on the Intent passed to onNewIntent. By default, that
 * intent does not get set as the Intent that started the app, so when the app comes back online
 * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so
 * that it sends the intent to the MessageForwardingService which forwards the message to the
 * FirebaseMessagingService which in turn sends the message to the application.
 */
@Override
protected void onNewIntent(Intent intent) {
  Intent message = new Intent(this, MessageForwardingService.class);
  message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
  message.putExtras(intent);
  message.setData(intent.getData());
  // For older versions of Firebase C++ SDK (< 7.1.0), use `startService`.
  // startService(message);
  MessageForwardingService.enqueueWork(this, message);
}

/**
 * Dispose of the mUnityPlayer when restarting the app.
 *
 * This ensures that when the app starts up again it does not start with stale data.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
  if (mUnityPlayer != null) {
    mUnityPlayer.quit();
    mUnityPlayer = null;
  }
  super.onCreate(savedInstanceState);
}

نسخه‌های جدید Firebase C++ SDK (7.1.0 به بعد) از JobIntentService استفاده می‌کنند که نیاز به تغییرات بیشتری در فایل AndroidManifest.xml دارد.

<service android:name="com.google.firebase.messaging.MessageForwardingService"
     android:permission="android.permission.BIND_JOB_SERVICE"
     android:exported="false" >
</service>

نکته ای در مورد تحویل پیام در اندروید

وقتی برنامه اصلاً اجرا نمی‌شود و کاربر روی یک اعلان ضربه می‌زند، پیام به‌طور پیش‌فرض از طریق تماس‌های FCM داخلی ارسال نمی‌شود. در این مورد، بارهای پیام از طریق یک Intent که برای شروع برنامه استفاده می شود دریافت می شود.

پیام‌های دریافت شده در حالی که برنامه در پس‌زمینه است، محتوای فیلد اعلان آن‌ها برای پر کردن اعلان سینی سیستم استفاده می‌شود، اما این محتوای اعلان به FCM مخابره نمی‌شود. یعنی FirebaseMessage.Notification پوچ خواهد بود.

به طور خلاصه:

وضعیت برنامه اطلاع رسانی داده ها هر دو
پیش زمینه Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
پس زمینه سینی سیستم Firebase.Messaging.FirebaseMessaging.MessageReceived اعلان: سینی سیستم
داده: در موارد اضافی قصد.

جلوگیری از مقداردهی اولیه خودکار

FCM یک نشانه ثبت نام برای هدف گذاری دستگاه تولید می کند. هنگامی که یک نشانه تولید می شود، کتابخانه شناسه و داده های پیکربندی را در Firebase آپلود می کند. اگر می‌خواهید قبل از استفاده از توکن، یک انتخاب صریح دریافت کنید، می‌توانید با غیرفعال کردن FCM (و در Android، Analytics) از تولید در زمان پیکربندی جلوگیری کنید. برای انجام این کار، یک مقدار فراداده به Info.plist خود (نه GoogleService-Info.plist خود) در Apple یا AndroidManifest.xml خود در Android اضافه کنید:

<?xml version="1.0" encoding="utf-8"?>
<application>
  <meta-data android:name="firebase_messaging_auto_init_enabled"
             android:value="false" />
  <meta-data android:name="firebase_analytics_collection_enabled"
             android:value="false" />
</application>
FirebaseMessagingAutoInitEnabled = NO

برای فعال کردن مجدد FCM، می توانید یک تماس در زمان اجرا برقرار کنید:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

پس از تنظیم، این مقدار در سراسر راه اندازی مجدد برنامه باقی می ماند.

FCM اجازه می دهد تا پیام هایی حاوی پیوند عمیق به برنامه شما ارسال شود. برای دریافت پیام‌هایی که حاوی پیوند عمیق هستند، باید یک فیلتر قصد جدید به فعالیتی اضافه کنید که پیوندهای عمیق را برای برنامه شما مدیریت می‌کند. فیلتر قصد باید پیوندهای عمیق دامنه شما را بگیرد. اگر پیام های شما حاوی پیوند عمیق نیستند، این پیکربندی ضروری نیست. در AndroidManifest.xml:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="http"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="https"/>
</intent-filter>

همچنین می توان برای انعطاف پذیرتر کردن فیلتر قصد، یک علامت عام مشخص کرد. به عنوان مثال:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="*.example.com" android:scheme="http"/>
  <data android:host="*.example.com" android:scheme="https"/>
</intent-filter>

وقتی کاربران بر روی یک اعلان حاوی پیوندی به طرح و میزبانی که مشخص کرده‌اید ضربه می‌زنند، برنامه شما فعالیت را با این فیلتر قصد شروع می‌کند تا پیوند را مدیریت کند.

مراحل بعدی

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

برای افزودن سایر رفتارهای پیشرفته تر به برنامه خود، به راهنمای ارسال پیام از سرور برنامه مراجعه کنید:

به خاطر داشته باشید که برای استفاده از این ویژگی ها به پیاده سازی سرور نیاز دارید.

،

برای نوشتن برنامه مشتری Firebase Cloud Messaging با Unity، از Firebase Cloud Messaging API استفاده کنید. Unity SDK هم برای اندروید و هم برای اپل کار می کند و برای هر پلتفرم نیاز به تنظیمات اضافی است.

قبل از شروع

پیش نیازها

  • Unity 2021 LTS یا بالاتر را نصب کنید. پشتیبانی از Unity 2020 منسوخ شده تلقی می شود و پس از نسخه اصلی بعدی دیگر فعالانه پشتیبانی نخواهد شد. نسخه های قبلی نیز ممکن است سازگار باشند، اما به طور فعال پشتیبانی نمی شوند.

  • (فقط پلتفرم های اپل) موارد زیر را نصب کنید:

    • Xcode 13.3.1 یا بالاتر
    • CocoaPods 1.12.0 یا بالاتر
  • مطمئن شوید که پروژه یونیتی شما با این شرایط مطابقت دارد:

    • برای iOS - iOS 13 یا بالاتر را هدف قرار می دهد
    • برای tvOS - tvOS 13 یا بالاتر را هدف قرار می دهد
    • برای Android - API سطح 21 (Lollipop) یا بالاتر را هدف قرار می دهد
  • برای اجرای پروژه Unity خود یک دستگاه راه اندازی کنید یا از یک شبیه ساز استفاده کنید.

    • برای iOS یا tvOS — یک دستگاه فیزیکی برای اجرای برنامه خود راه اندازی کنید و این کارها را کامل کنید:

      • یک کلید تأیید اعتبار Apple Push Notification برای حساب Apple Developer خود دریافت کنید.
      • Push Notifications را در XCode در قسمت App > Capabilities فعال کنید.
    • برای اندرویدشبیه سازها باید از یک تصویر شبیه ساز با Google Play استفاده کنند.

اگر قبلاً پروژه یونیتی ندارید و فقط می‌خواهید یک محصول Firebase را امتحان کنید، می‌توانید یکی از نمونه‌های شروع سریع ما را دانلود کنید.

مرحله 1: یک پروژه Firebase ایجاد کنید

قبل از اینکه بتوانید Firebase را به پروژه Unity خود اضافه کنید، باید یک پروژه Firebase ایجاد کنید تا به پروژه Unity خود متصل شوید. برای کسب اطلاعات بیشتر در مورد پروژه های Firebase، از Understand Firebase Projects دیدن کنید.

  1. در کنسول Firebase ، روی افزودن پروژه کلیک کنید.

    • برای افزودن منابع Firebase به پروژه Google Cloud موجود ، نام پروژه آن را وارد کنید یا آن را از منوی کشویی انتخاب کنید.

    • برای ایجاد یک پروژه جدید، نام پروژه مورد نظر را وارد کنید. همچنین می توانید به صورت اختیاری شناسه پروژه نمایش داده شده در زیر نام پروژه را ویرایش کنید.

  2. در صورت درخواست، شرایط Firebase را بررسی کرده و بپذیرید.

  3. روی Continue کلیک کنید.

  4. (اختیاری) Google Analytics برای پروژه خود راه اندازی کنید، که به شما امکان می دهد با استفاده از هر یک از محصولات Firebase زیر تجربه ای بهینه داشته باشید:

    یا یک حساب Google Analytics موجود را انتخاب کنید یا یک حساب جدید ایجاد کنید.

    اگر حساب جدیدی ایجاد می‌کنید، مکان گزارش Analytics خود را انتخاب کنید، سپس تنظیمات اشتراک‌گذاری داده و شرایط Google Analytics را برای پروژه خود بپذیرید.

  5. روی ایجاد پروژه (یا افزودن Firebase ، اگر از پروژه Google Cloud موجود استفاده می کنید) کلیک کنید.

Firebase به طور خودکار منابع پروژه Firebase شما را فراهم می کند. پس از تکمیل فرآیند، به صفحه نمای کلی پروژه Firebase خود در کنسول Firebase هدایت خواهید شد.

مرحله 2: برنامه خود را در Firebase ثبت کنید

می توانید یک یا چند برنامه یا بازی را برای اتصال به پروژه Firebase خود ثبت کنید.

  1. به کنسول Firebase بروید.

  2. در مرکز صفحه نمای کلی پروژه، روی نماد Unity ( ) کلیک کنید تا گردش کار راه اندازی شود.

    اگر قبلاً برنامه ای را به پروژه Firebase خود اضافه کرده اید ، روی Add App برای نمایش گزینه های پلتفرم کلیک کنید.

  3. کدام یک از پروژه های Unity خود را که می خواهید ثبت نام کنید ، انتخاب کنید ، یا حتی می توانید همزمان همزمان هر دو هدف را ثبت کنید.

  4. شناسه (های) خاص پلت فرم پروژه Unity خود را وارد کنید.

    • برای iOS - شناسه iOS پروژه وحدت خود را در قسمت شناسه بسته نرم افزاری iOS وارد کنید.

    • برای Android - شناسه Android Project Unity Project خود را در قسمت Android Package Name وارد کنید.
      اصطلاحات نام بسته و شناسه برنامه اغلب به صورت متقابل استفاده می شوند.

    پروژه وحدت خود را در IDE Unity خود باز کنید ، سپس به بخش تنظیمات برای هر سیستم عامل بروید:

    • برای iOS - برای ساخت تنظیمات> iOS حرکت کنید.

    • برای Android - به Android> تنظیمات پخش کننده> تنظیمات دیگر بروید.

    شناسه پروژه وحدت شما مقدار شناسه بسته (مثال شناسه: com.yourcompany.yourproject ) است.

  5. (اختیاری) نام مستعار خاص پلت فرم پروژه Unity خود را وارد کنید.
    این نامهای مستعار داخلی ، شناسه های راحتی هستند و فقط در کنسول Firebase برای شما قابل مشاهده هستند.

  6. روی برنامه ثبت نام کلیک کنید.

مرحله 3: پرونده های پیکربندی Firebase را اضافه کنید

  1. پرونده (های) پیکربندی Firebase خاص خود را در جریان کار تنظیم کنسول Firebase به دست آورید.

    • برای iOS- روی بارگیری Googleservice-info.plist کلیک کنید.

    • برای Android- روی بارگیری Google-Service.json کلیک کنید.

    • پرونده پیکربندی Firebase حاوی شناسه های منحصر به فرد اما غیر مخفی برای پروژه شما است. برای کسب اطلاعات بیشتر در مورد این پرونده پیکربندی ، به پروژه های Firebase Swite مراجعه کنید.

    • می توانید در هر زمان دوباره پرونده پیکربندی Firebase خود را بارگیری کنید.

    • اطمینان حاصل کنید که نام پرونده پیکربندی با شخصیت های اضافی مانند (2) ضمیمه نشده است.

  2. پنجره پروژه پروژه وحدت خود را باز کنید ، سپس فایل (های) پیکربندی خود را به پوشه Assets منتقل کنید.

  3. دوباره در کنسول Firebase ، در گردش کار تنظیم ، روی Next کلیک کنید.

مرحله 4: SDK های Unity Firebase را اضافه کنید

  1. در کنسول Firebase ، روی بارگیری Firebase Unity SDK کلیک کنید ، سپس SDK را در جایی مناسب از حالت فشرده جدا کنید.

    • می توانید در هر زمان دوباره SDK Firebase Unity را بارگیری کنید.

    • Firebase Unity SDK خاص سکو نیست.

  2. در پروژه وحدت باز خود ، به دارایی ها > بسته وارد کردن > بسته سفارشی بروید.

  3. از SDK از بین رفته ، محصولات Firebase پشتیبانی شده را که می خواهید در برنامه خود استفاده کنید ، انتخاب کنید.

    برای یک تجربه بهینه با Firebase Cloud Messaging ، توصیه می کنیم Google Analytics در پروژه خود فعال کنید . همچنین ، به عنوان بخشی از تنظیم Analytics ، باید بسته Firebase را برای Analytics به برنامه خود اضافه کنید.

    • بسته Firebase را برای Google Analytics اضافه کنید: FirebaseAnalytics.unitypackage
    • بسته Firebase Cloud Messaging را اضافه کنید: FirebaseMessaging.unitypackage

    بسته Firebase Cloud Messaging را اضافه کنید: FirebaseMessaging.unitypackage

  4. در پنجره بسته بندی Import Unity ، روی واردات کلیک کنید.

  5. دوباره در کنسول Firebase ، در گردش کار تنظیم ، روی Next کلیک کنید.

مرحله 5: الزامات نسخه خدمات Google Play را تأیید کنید

برخی از محصولات موجود در Firebase Unity SDK برای Android به Google Play services نیاز دارند. بیاموزید که کدام محصولات این وابستگی را دارند . قبل از استفاده از این محصولات ، Google Play services باید به روز باشد.

موارد زیر را using عبارت و کد اولیه سازی در ابتدای برنامه خود اضافه کنید. قبل از تماس با هر روش دیگر در SDK ، می توانید Google Play services به صورت اختیاری به روز کنید و به صورت اختیاری به روز کنید.

using Firebase.Extensions;
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
       app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

پروژه وحدت شما برای استفاده از Firebase ثبت و پیکربندی شده است.

کلید احراز هویت APNS خود را برای پشتیبانی اپل بارگذاری کنید

کلید احراز هویت APN خود را در Firebase بارگذاری کنید. اگر قبلاً کلید احراز هویت APNS ندارید ، حتماً یکی از آنها را در مرکز عضو توسعه دهنده اپل ایجاد کنید.

  1. در داخل پروژه خود در کنسول Firebase ، نماد Gear را انتخاب کنید ، تنظیمات پروژه را انتخاب کنید و سپس برگه Cloud Messaging را انتخاب کنید.

  2. در کلید تأیید هویت APNS تحت پیکربندی برنامه iOS ، روی دکمه بارگذاری کلیک کنید.

  3. به مکانی که کلید خود را ذخیره کرده اید ، آن را انتخاب کرده و روی Open کلیک کنید. شناسه کلید را برای کلید (موجود در مرکز عضو توسعه دهنده اپل ) اضافه کنید و روی بارگذاری کلیک کنید.

اعلان های فشار را روی سیستم عامل های اپل فعال کنید

مرحله 1: چارچوب اعلان های کاربر را اضافه کنید

  1. روی پروژه در Xcode کلیک کنید ، سپس برگه عمومی را از منطقه ویرایشگر انتخاب کنید.

  2. به چارچوب ها و کتابخانه های پیوندی بروید ، سپس روی دکمه + کلیک کنید تا یک چارچوب اضافه شود.

  3. در پنجره ای که ظاهر می شود ، به usernotifications.framework بروید ، روی آن ورودی کلیک کنید ، سپس روی add کلیک کنید.

مرحله 2: اعلان های فشار را فعال کنید

  1. بر روی پروژه در Xcode کلیک کنید ، سپس برگه قابلیت ها را از منطقه ویرایشگر انتخاب کنید.

  2. اعلان های فشار را به روشن کنید.

  3. به حالت های پس زمینه بروید ، سپس آن را روشن کنید.

  4. کادر انتخاب از راه دور اعلان ها را در حالت های پس زمینه انتخاب کنید.

Firebase Cloud Messaging را اولیه کنید

کتابخانه پیام Cloud Firebase هنگام اضافه کردن دستگیره ها برای رویدادهای TokenReceived یا MessageReceived آغاز می شود.

پس از اولیه سازی ، یک نشانه ثبت نام برای نمونه برنامه مشتری درخواست می شود. این برنامه با رویداد OnTokenReceived ، که باید برای استفاده بعدی ذخیره شود ، این نشانه را دریافت می کند. اگر می خواهید این دستگاه خاص را برای پیام ها هدف قرار دهید ، به این نشانه احتیاج دارید.

علاوه بر این ، اگر می خواهید پیام های دریافتی دریافت کنید ، باید برای رویداد OnMessageReceived ثبت نام کنید.

کل تنظیمات به این شکل است:

public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
  UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}

public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}

پیکربندی فعالیت نقطه ورود اندرویدی

در Android ، Firebase Cloud Messaging با یک فعالیت نقطه ورود سفارشی همراه است که جایگزین UnityPlayerActivity پیش فرض می شود. اگر از نقطه ورود سفارشی استفاده نمی کنید ، این جایگزینی به طور خودکار اتفاق می افتد و لازم نیست که هیچ اقدام دیگری انجام دهید. برنامه هایی که از فعالیت پیش فرض ورودی استفاده نمی کنند یا Assets/Plugins/AndroidManifest.xml به پیکربندی اضافی نیاز دارند.

افزونه Unity Firebase Cloud Messaging در Android با دو پرونده اضافی همراه است:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar شامل فعالیتی به نام MessagingUnityPlayerActivity است که جایگزین UnityPlayerActivity استاندارد می شود.
  • Assets/Plugins/Android/AndroidManifest.xml به برنامه دستور می دهد تا MessagingUnityPlayerActivity استفاده کند و به عنوان نقطه ورود به برنامه استفاده کند.

این پرونده ها ارائه می شوند زیرا UnityPlayerActivity پیش فرض onStop ، انتقال چرخه عمر فعالیت onRestart را کنترل نمی کند یا onNewIntent پیاده سازی می کند که برای Firebase Cloud Messaging لازم است تا به درستی پیام های دریافتی را انجام دهد.

پیکربندی یک فعالیت نقطه ورود سفارشی

اگر برنامه شما از UnityPlayerActivity پیش فرض استفاده نمی کند ، باید AndroidManifest.xml حذف کنید و اطمینان حاصل کنید که فعالیت سفارشی شما به درستی تمام انتقال های چرخه فعالیت Android را انجام می دهد (نمونه ای از نحوه انجام این کار در زیر نشان داده شده است). اگر فعالیت سفارشی شما UnityPlayerActivity گسترش می دهد ، می توانید در عوض com.google.firebase.MessagingUnityPlayerActivity گسترش دهید که تمام روشهای لازم را پیاده سازی می کند.

اگر از یک فعالیت سفارشی استفاده می کنید و com.google.firebase.MessagingUnityPlayerActivity را گسترش نمی دهید ، باید قطعه های زیر را در فعالیت خود قرار دهید.

/**
 * Workaround for when a message is sent containing both a Data and Notification payload.
 *
 * When the app is in the background, if a message with both a data and notification payload is
 * received the data payload is stored on the Intent passed to onNewIntent. By default, that
 * intent does not get set as the Intent that started the app, so when the app comes back online
 * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so
 * that it sends the intent to the MessageForwardingService which forwards the message to the
 * FirebaseMessagingService which in turn sends the message to the application.
 */
@Override
protected void onNewIntent(Intent intent) {
  Intent message = new Intent(this, MessageForwardingService.class);
  message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
  message.putExtras(intent);
  message.setData(intent.getData());
  // For older versions of Firebase C++ SDK (< 7.1.0), use `startService`.
  // startService(message);
  MessageForwardingService.enqueueWork(this, message);
}

/**
 * Dispose of the mUnityPlayer when restarting the app.
 *
 * This ensures that when the app starts up again it does not start with stale data.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
  if (mUnityPlayer != null) {
    mUnityPlayer.quit();
    mUnityPlayer = null;
  }
  super.onCreate(savedInstanceState);
}

نسخه های جدید Firebase C ++ SDK (7.1.0 به بعد) از JobIntentService استفاده می کنند که به اصلاحات اضافی در پرونده AndroidManifest.xml نیاز دارد.

<service android:name="com.google.firebase.messaging.MessageForwardingService"
     android:permission="android.permission.BIND_JOB_SERVICE"
     android:exported="false" >
</service>

در مورد تحویل پیام در اندروید توجه داشته باشید

هنگامی که برنامه به هیچ وجه در حال اجرا نیست و کاربر به یک اعلان ضربه می زند ، پیام به طور پیش فرض ، از طریق FCM ساخته شده در تماس تلفنی هدایت نمی شود. در این حالت ، بارهای پیام از طریق Intent که برای شروع برنامه استفاده می شود دریافت می شود.

پیام های دریافت شده در حالی که برنامه در پس زمینه است ، محتوای قسمت اعلان خود را برای جمع آوری اطلاع رسانی سینی سیستم استفاده می کنند ، اما آن محتوای اعلان به FCM ابلاغ نمی شود. یعنی FirebaseMessage.Notification یک تهی خواهد بود.

به طور خلاصه:

وضعیت برنامه اطلاع رسانی داده ها هر دو
پیش زمینه Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
پس زمینه سینی سیستم Firebase.Messaging.FirebaseMessaging.MessageReceived اعلان: سینی سیستم
داده: در موارد اضافی قصد.

از ابتدای خودکار جلوگیری کنید

FCM یک نشانه ثبت نام برای هدف قرار دادن دستگاه ایجاد می کند. هنگامی که یک نشانه تولید می شود ، کتابخانه داده های شناسه و پیکربندی را در Firebase بارگذاری می کند. اگر می خواهید قبل از استفاده از توکن ، یک انتخاب صریح را دریافت کنید ، می توانید با غیرفعال کردن FCM (و در Android ، Analytics) از تولید در زمان پیکربندی جلوگیری کنید. برای انجام این کار ، یک مقدار ابرداده را به Info.plist خود اضافه کنید. پپ (نه GoogleService-Info.plist شما) در Apple یا AndroidManifest.xml در Android:

<?xml version="1.0" encoding="utf-8"?>
<application>
  <meta-data android:name="firebase_messaging_auto_init_enabled"
             android:value="false" />
  <meta-data android:name="firebase_analytics_collection_enabled"
             android:value="false" />
</application>
FirebaseMessagingAutoInitEnabled = NO

برای ورود مجدد FCM ، می توانید یک تماس با زمان اجرا کنید:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

این مقدار در سراسر برنامه مجدداً تنظیم می شود.

FCM اجازه می دهد تا پیام هایی با پیوند عمیق به برنامه شما ارسال شود. برای دریافت پیام هایی که حاوی یک پیوند عمیق است ، باید یک فیلتر قصد جدید به فعالیتی که پیوندهای عمیق برای برنامه شما را کنترل می کند ، اضافه کنید. فیلتر قصد باید پیوندهای عمیقی از دامنه شما را بدست آورد. اگر پیام های شما حاوی پیوند عمیقی نیستند ، این پیکربندی لازم نیست. در AndroidManifest.xml:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="http"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="https"/>
</intent-filter>

همچنین می توان یک کارت وحشی را مشخص کرد تا فیلتر قصد انعطاف پذیر تر شود. به عنوان مثال:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="*.example.com" android:scheme="http"/>
  <data android:host="*.example.com" android:scheme="https"/>
</intent-filter>

هنگامی که کاربران روی یک اعلان حاوی پیوندی به طرح و میزبان مشخص شده ضربه می زنند ، برنامه شما فعالیت را با این فیلتر قصد برای رسیدگی به لینک شروع می کند.

مراحل بعدی

پس از تنظیم برنامه مشتری ، شما آماده ارسال پیام های پایین دست و موضوع با Firebase هستید. برای کسب اطلاعات بیشتر ، به نمونه QuickStart مراجعه کنید که این عملکرد را نشان می دهد.

برای افزودن رفتارهای پیشرفته تر به برنامه خود ، به راهنماهای ارسال پیام از سرور برنامه مراجعه کنید:

به خاطر داشته باشید که برای استفاده از این ویژگی ها به اجرای سرور نیاز دارید.