پیامرسانی (Messaging)
متریکس به شما امکان میده تا از طریق کانالهای ارتباطی مختلف، پیامهای هدفمند رو به کاربران خودتون در اپلیکیشن Unity ارسال کنید. این بخش راهنمای پیادهسازی دو کانال اصلی پیامرسانی یعنی Push Notification (پوش نوتیفیکیشن) و In-App Message (پیام درونبرنامهای) است.
۱. پیادهسازی Push Notification (مخصوص Android)
برای ارسال پوش نوتیفیکیشن از طریق متریکس، لازم است که از Firebase Cloud Messaging (FCM) در پروژه اندروید خود استفاده کنید و تنظیمات لازم رو در پنل متریکس و کد اپلیکیشن خودتون انجام بدید.
۱.۱. پیکربندی Firebase در پروژه و پنل متریکس
-
پیکربندی فایل
google-services.json
: فایلgoogle-services.json
رو از کنسول فایربیس پروژه خودتون دانلود کنید. توجه داشته باشید که این فایل به صورت خودکار توسط Unity/Android شناسایی نمیشه و باید به درستی در پروژه شما پیکربندی بشه تا Firebase SDK بتونه اون رو شناسایی کنه.دو روش اصلی برای انجام این کار وجود داره:
- روش ۱ (توصیه شده): استفاده از Firebase Unity SDK:
بهترین و مطمئنترین روش برای اطمینان از پیکربندی صحیح، استفاده از پلاگین رسمی Firebase Unity SDK است. پس از Import کردن این پلاگین به پروژه یونیتی، فایل
google-services.json
رو باید در مسیرAssets/Firebase
در پروژه Unity خودتون قرار بدید. - روش ۲ (جایگزین): تبدیل به XML:
میتونید محتوای فایل
google-services.json
رو به فرمت XML تبدیل کرده و اون رو در فایلstrings.xml
مربوط به پروژه اندروید خودتون قرار بدید. جزئیات بیشتر در مورد این روش و فیلدهای مورد نیاز رو میتونید در مستندات Google Services Plugin بیابید.
- وارد کردن Push Credentials در پنل متریکس:
- وارد پنل متریکس خودتون بشید.
- به بخش تنظیمات اپلیکیشن برید.
- سربرگ
Channel Integration
رو انتخاب کرده و سپس رویApp Push
کلیک کنید. - در این صفحه، تنظیمات پروژه فایربیس خودتون رو در فیلدهای مربوطه وارد کنید.
- با کلیک بر روی دکمه
save
، مقادیر رو ذخیره کنید. - نکته: برای دریافت فایل
Service account Data
(که شاملprivate key
پروژه شماست)، میتونید از کنسول فایربیس خودتون در بخشProject settings
، سربرگService Accounts
، دکمهGenerate new private key
رو بزنید.
۱.۲. فعالسازی قابلیت Push Notification در Unity
افزودن Service به AndroidManifest.xml
:
برای دریافت و مدیریت پیامهای FCM توسط متریکس، شما میتونید یکی از دو روش زیر رو در فایل AndroidManifest.xml
اپلیکیشن خودتون پیادهسازی کنید:
- روش ۱ (توصیه شده): استفاده از
MetrixFirebaseMessagingService
: این سرویس پیشفرض متریکس است که برای دریافت پیامهای FCM بهینهسازی شده. مقادیر زیر رو درون تگ<application>
قرار بدید:
<manifest>
...
<application>
...
<service
android:name="ir.metrix.notification.receivers.MetrixFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
نکته برای پروژههایی با FirebaseMessagingService
موجود:
اگر شما از قبل یک FirebaseMessagingService
سفارشی در پروژه اندروید خود دارید و نمیخواهید سرویس متریکس را به صورت جداگانه در AndroidManifest.xml
اضافه کنید، میتوانید با اضافه کردن یک خط کد، پیامهای متریکس را از طریق سرویس موجود خود مدیریت کنید. این کار به شما امکان میدهد تا منطق دریافت پیامهای FCM خود را حفظ کرده و در عین حال پیامهای متریکس را نیز پردازش کنید.
در متد onMessageReceived
سرویس FirebaseMessagingService
خود، متد MetrixNotification.onMessageReceived(message)
را فراخوانی کنید. مهم است که این خط کد قبل از پردازش پیامهای FCM خودتان قرار گیرد. اگر پیام توسط متریکس پردازش شود، متد true
را برمیگرداند و شما میتوانید از پردازش بیشتر آن صرفنظر کنید.
import ir.metrix.notification.MetrixNotification;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class CustomFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage message) {
// Pass the message to Metrix. If Metrix processes it, it returns true.
if (MetrixNotification.onMessageReceived(message)) {
return; // Metrix handled this message, no further processing needed for Metrix messages
}
// If Metrix did not handle the message, process your own FCM messages here
// your own fcm messages processing logic
}
}
نکته: مطمئن شوید که MetrixNotification
در پروژه شما قابل دسترسی است.
- روش ۲: استفاده از
FCMBroadcastReceiver
(جایگزین): این روش از یک Broadcast Receiver برای دریافت پیامهای FCM استفاده میکنه. نکته: اگر از این روش استفاده میکنید، باید یک Permission یکتا برای اپلیکیشن خودتون ایجاد کنید تا فقط اپلیکیشن شما بتونه پیامهای اعلان متریکس رو دریافت کنه. مقادیر زیر رو به فایلAndroidManifest.xml
خودتون اضافه کنید:
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<receiver
android:name="ir.metrix.notification.receivers.FCMBroadcastReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter android:priority="999">
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
فقط یکی از روشهای ۱ یا ۲ رو برای افزودن سرویس/Receiver مربوط به پوش نوتیفیکیشن در AndroidManifest.xml
خودتون انتخاب و پیادهسازی کنید.
۲. پیادهسازی پیام درونبرنامهای (In-App Message)
پیامهای درونبرنامهای، پیامهایی هستن که مستقیماً در داخل اپلیکیشن شما به کاربر نمایش داده میشن و برای تعاملات متنی در لحظه خیلی مفید هستن.
۲.۱. کنترل بارگذاری خودکار پیامها
به صورت پیشفرض، متریکس SDK پیامهای درونبرنامهای رو با هر بار باز شدن اپلیکیشن (یا ورود به Foreground) بارگذاری کرده و نمایش میده. اگر میخواید کنترل بیشتری بر زمان و مکان نمایش پیامها داشته باشید و اونها رو در صفحه دلخواه به کاربر نشون بدید، میتونید بارگذاری خودکار رو غیرفعال کنید:
- غیرفعالسازی بارگذاری خودکار در
AndroidManifest.xml
(مخصوص Android): مقدارmetrix_auto_load_in_app_messages
رو در فایلAndroidManifest.xml
اپلیکیشن خودتون تنظیم کنید:
<manifest>
...
<application>
...
<meta-data
android:name="metrix_auto_load_in_app_messages"
android:value="false" /> </application>
</manifest>
- فراخوانی دستی پیامها در کد C#:
پس از غیرفعالسازی بارگذاری خودکار، میتونید در هر نقطه دلخواهی از کد C# خودتون، متد
Metrix.LoadInAppMessages()
رو فراخوانی کنید تا پیامهای درونبرنامهای بارگذاری و نمایش داده بشن:
// Call this method in your C# script when you want to load and display in-app messages
Metrix.LoadInAppMessages();
نکته: تنظیمات بارگذاری خودکار برای پیامهای درونبرنامهای در پلتفرم اندروید از طریق AndroidManifest.xml
کنترل میشه.
You got it. Here’s the Java version of that code snippet, with the necessary import statement.
import ir.metrix.notification.MetrixNotification;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class CustomFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage message) {
// Pass the message to Metrix. If Metrix processes it, it returns true.
if (MetrixNotification.onMessageReceived(message)) {
return; // Metrix handled this message, no further processing needed for Metrix messages
}
// If Metrix did not handle the message, process your own FCM messages here
// your own fcm messages processing logic
}
}
Let me know if there’s anything else I can help with!