Google 致力于为黑人社区推动种族平等。查看具体举措

Ityক্যের সাথে ফায়ারবেস ক্লাউড মেসেজিং ক্লায়েন্ট অ্যাপ সেট আপ করুন

আপনার ক্রস-প্ল্যাটফর্ম ঐক্য সঙ্গে Firebase ক্লাউড মেসেজিং ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে, ব্যবহার Firebase ক্লাউড মেসেজিং API- টি। ইউনিটি এসডিকে অ্যান্ড্রয়েড এবং আইওএস উভয়ের জন্য কাজ করে, প্রতিটি প্ল্যাটফর্মের জন্য কিছু অতিরিক্ত সেটআপ প্রয়োজন।

তুমি শুরু করার আগে

পূর্বশর্ত

  • ইউনিটি 2017.4 বা তার পরে ইনস্টল করুন। আগের সংস্করণগুলিও সামঞ্জস্যপূর্ণ হতে পারে কিন্তু সক্রিয়ভাবে সমর্থিত হবে না।

  • (প্রয়োজন iOS শুধুমাত্র) নিম্নলিখিত ইনস্টল করুন:

    • এক্সকোড 9.4.1 বা উচ্চতর
    • কোকোপডস 1.10.0 বা উচ্চতর
  • নিশ্চিত করুন যে আপনার ইউনিটি প্রকল্প এই প্রয়োজনীয়তাগুলি পূরণ করে:

    • আইওএস জন্য - আইওএস 10 বা উচ্চতর লক্ষ্য
    • লক্ষ্যমাত্রা এপিআই স্তর 16 (জেলি বিন) বা উচ্চতর - Android এর জন্য

  • আপনার ইউনিটি প্রকল্প চালানোর জন্য একটি ডিভাইস সেট করুন বা একটি এমুলেটর ব্যবহার করুন।

    • আইওএস জন্য - একটি শারীরিক iOS ডিভাইস সেট আপ করুন আপনার অ্যাপ্লিকেশন চালানোর জন্য, এবং এই কাজগুলো সম্পন্ন করার জন্য:

      • আপনার জন্য একটি আপেল পুশ নোটিফিকেশন প্রমাণীকরণ কী সংগ্রহ অ্যাপল বিকাশকারী অ্যাকাউন্ট
      • অ্যাপ অধীনে উপর XCode পুশ বিজ্ঞপ্তি সক্ষম করুন> কেপেবিলিটিস।
    • Android এর জন্য - emulators Google প্লে সঙ্গে একটি এমুলেটর ইমেজ ব্যবহার করা আবশ্যক।

যদি আপনি ইতিমধ্যেই একটি ঐক্য প্রকল্প আছে না করেন এবং শুধু একটি Firebase পণ্য ব্যবহার করে দেখতে চান, আপনি আমাদের এক বিনামূল্যে ডাউনলোড করতে পারেন দ্রুতশুরু নমুনা

ধাপ 1: একটি Firebase প্রকল্প তৈরি করুন

আপনি আপনার ইউনিটি প্রজেক্টে ফায়ারবেস যোগ করার আগে, আপনার ইউনিটি প্রজেক্টের সাথে সংযোগ স্থাপনের জন্য আপনাকে একটি ফায়ারবেস প্রজেক্ট তৈরি করতে হবে। পরিদর্শন বুঝুন Firebase প্রকল্প Firebase প্রকল্পগুলি সম্পর্কে আরও জানতে।

ধাপ ২: ফায়ারবেসে আপনার অ্যাপ নিবন্ধন করুন

আপনি আপনার Firebase প্রকল্পের সাথে সংযোগ স্থাপনের জন্য এক বা একাধিক অ্যাপ বা গেম নিবন্ধন করতে পারেন।

  1. যান Firebase কনসোল

  2. প্রকল্পের ওভারভিউ পৃষ্ঠার কেন্দ্রে, ইউনিটি আইকন (ক্লিক সেটআপ কর্মপ্রবাহ আরম্ভ করার জন্য)।

    আপনি ইতিমধ্যেই আপনার Firebase প্রকল্পে একটি অ্যাপ্লিকেশন যোগ করে থাকেন, প্ল্যাটফর্ম অপশন প্রদর্শন করে অ্যাপ্লিকেশান যোগ ক্লিক করুন।

  3. আপনার ইউনিটি প্রজেক্টের কোন বিল্ড টার্গেটটি আপনি নিবন্ধন করতে চান তা নির্বাচন করুন, অথবা আপনি এখন একই সময়ে উভয় লক্ষ্য নিবন্ধন করতে নির্বাচন করতে পারেন।

  4. আপনার ইউনিটি প্রকল্পের প্ল্যাটফর্ম-নির্দিষ্ট আইডি (গুলি) লিখুন।

    • আইওএস জন্য - আপনার ইউনিটি প্রকল্পের আইওএস আইডি লিখুন আইওএস বান্ডিল আইডি ক্ষেত্র।

    • Android এর জন্য - আপনার ইউনিটি প্রকল্পের অ্যান্ড্রয়েড আইডি লিখুন অ্যান্ড্রয়েড প্যাকেজের নাম ক্ষেত্র।
      পদ প্যাকেজের নাম এবং আবেদন আইডি প্রায়ই অদলবদল করে ব্যবহার করা হয়।

  5. (ঐচ্ছিক) আপনার ইউনিটি প্রকল্পের প্ল্যাটফর্ম-নির্দিষ্ট ডাক নাম (গুলি) সন্নিবেশ করান।
    এই ডাকনামগুলি অভ্যন্তরীণ, সুবিধার শনাক্তকারী এবং শুধুমাত্র Firebase কনসোলে আপনার কাছে দৃশ্যমান।

  6. নিবন্ধন অ্যাপ্লিকেশন ক্লিক করুন।

ধাপ 3: Firebase কনফিগারেশন ফাইল যোগ করুন

  1. ফায়ারবেস কনসোল সেটআপ ওয়ার্কফ্লোতে আপনার প্ল্যাটফর্ম-নির্দিষ্ট ফায়ারবেস কনফিগারেশন ফাইল (গুলি) পান।

    • IOS জন্য - ডাউনলোড GoogleService-Info.plist ক্লিক করুন।

    • Android এর জন্য - ক্লিক করে ডাউনলোড করুন Google এর services.json।

  2. আপনার ইউনিটি প্রকল্পের প্রকল্প উইন্ডো খুলুন, তারপর আপনার কনফিগ ফাইল (গুলি) স্থানান্তর Assets ফোল্ডার।

  3. Firebase কনসোলে পিছনে, সেটআপ কর্মপ্রবাহ মধ্যে, Next ক্লিক করুন।

ধাপ 4: Firebase Unity SDKs যোগ করুন

  1. Firebase কনসোলে, SDK এর কোথাও সুবিধাজনক আনজিপ করে ডাউনলোড করুন এই Firebase ইউনিটি SDK এর ক্লিক তারপর।

    • আপনি ডাউনলোড করতে পারেন Firebase ইউনিটি SDK এর যে কোন সময়ে আবার।

    • ফায়ারবেস ইউনিটি এসডিকে প্ল্যাটফর্ম-নির্দিষ্ট নয়।

  2. আপনার খোলা ইউনিটি প্রকল্প, সম্পদ নেভিগেট> আমদানি প্যাকেজ> কাস্টম প্যাকেজের মধ্যে।

  3. আনজিপ SDK থেকে নির্বাচন সমর্থিত Firebase পণ্য যে আপনি আপনার app এর মধ্যে ব্যবহার করতে চান।

    Firebase ক্লাউড মেসেজিং সঙ্গে একটি অনুকূল অভিজ্ঞতার জন্য, আমরা প্রস্তাব Google এনালিটিক্স সক্রিয় আপনার প্রকল্পের মধ্যে। এছাড়াও, অ্যানালিটিক্স সেট আপ করার অংশ হিসাবে, আপনাকে আপনার অ্যাপে অ্যানালিটিক্সের জন্য Firebase প্যাকেজ যোগ করতে হবে।

    অ্যানালিটিক্স সক্ষম

    • Google এনালিটিক্স জন্য Firebase প্যাকেজ যোগ করুন FirebaseAnalytics.unitypackage
    • Firebase ক্লাউড মেসেজিং প্যাকেজের যোগ করুন FirebaseMessaging.unitypackage

    অ্যানালিটিক্স সক্ষম করা হয়নি

    Firebase ক্লাউড মেসেজিং প্যাকেজের যোগ করুন FirebaseMessaging.unitypackage

  4. আমদানি ইউনিটি প্যাকেজ উইন্ডোতে, আমদানি ক্লিক করুন।

  5. Firebase কনসোলে পিছনে, সেটআপ কর্মপ্রবাহ মধ্যে, Next ক্লিক করুন।

ধাপ 5: Google Play পরিষেবার সংস্করণের প্রয়োজনীয়তা নিশ্চিত করুন

Android এর জন্য Firebase ইউনিটি SDK এর প্রয়োজন Google Play পরিষেবাদি , যা আপ-টু-ডেট SDK এর ব্যবহার করা যেতে পারে আগে হওয়া আবশ্যক।

আপনার আবেদনের শুরুতে নিম্নলিখিত কোড যোগ করুন। আপনি SDK- তে অন্য কোন পদ্ধতিতে কল করার আগে Firebase Unity SDK- এর প্রয়োজনীয় সংস্করণে Google Play পরিষেবাগুলি পরীক্ষা করতে এবং বিকল্পভাবে আপডেট করতে পারেন।

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(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.
  }
});

আপনার ইউনিটি প্রকল্পটি নিবন্ধিত এবং ফায়ারবেস ব্যবহার করার জন্য কনফিগার করা হয়েছে।

ধাপ 7: ব্যবহারকারীর বিজ্ঞপ্তি কাঠামো যুক্ত করুন

  1. Xcode প্রকল্প ক্লিক করুন, তারপর সম্পাদক এলাকা থেকে সাধারণ ট্যাব নির্বাচন করুন।

  2. স্ক্রোল লিঙ্কড অবকাঠামো ও লাইব্রেরি নিচে, তারপর + বোতামে ক্লিক একটি কাঠামো যোগ করতে।

  3. প্রদর্শিত উইন্ডোটিতে, UserNotifications.framework স্ক্রোল, যে এন্ট্রি ক্লিক করুন, তারপর ক্লিক যোগ করুন।

ধাপ 8: পুশ বিজ্ঞপ্তি সক্ষম করুন

  1. Xcode প্রকল্প ক্লিক করুন, তারপর সম্পাদক এলাকা থেকে কেপেবিলিটিস ট্যাব নির্বাচন করুন।

  2. উপর পুশ বিজ্ঞপ্তি স্যুইচ করুন।

  3. স্ক্রোল পটভূমি মোড নিচে, তারপর এটি উপর স্যুইচ করুন।

  4. পটভূমি মোড অধীনে রিমোট বিজ্ঞপ্তিগুলি চেকবক্সটি নির্বাচন করুন।

ফায়ারবেস ক্লাউড মেসেজিং শুরু করুন

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 ক্লাউড মেসেজিং একটি কাস্টম এন্ট্রি পয়েন্ট কার্যকলাপ ডিফল্ট প্রতিস্থাপন সঙ্গে bundled আসে UnityPlayerActivity । যদি আপনি একটি কাস্টম এন্ট্রি পয়েন্ট ব্যবহার না করেন তাহলে এই প্রতিস্থাপন স্বয়ংক্রিয়ভাবে ঘটে এবং আপনাকে কোন অতিরিক্ত পদক্ষেপ নিতে হবে না। অ্যাপ্লিকেশানগুলি ডিফল্ট এন্ট্রি পয়েন্ট কার্যকলাপ বা যে সরবরাহ ব্যবহার করবেন না তাদের নিজস্ব Assets/Plugins/AndroidManifest.xml অতিরিক্ত কনফিগারেশন প্রয়োজন হবে।

অ্যান্ড্রয়েডে ফায়ারবেস ক্লাউড মেসেজিং ইউনিটি প্লাগইন দুটি অতিরিক্ত ফাইল নিয়ে গঠিত:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar একটি কার্যকলাপ নামক রয়েছে MessagingUnityPlayerActivity যে আদর্শ প্রতিস্থাপন UnityPlayerActivity
  • Assets/Plugins/Android/AndroidManifest.xml নির্দেশ করে অ্যাপ্লিকেশন ব্যবহার করতে MessagingUnityPlayerActivity অ্যাপ্লিকেশানে এন্ট্রি পয়েন্ট হিসাবে।

এই ফাইলগুলি প্রদান করা হয় কারণ ডিফল্ট UnityPlayerActivity হ্যান্ডেল নেই onStop , onRestart কার্যকলাপ জীবনচক্র ট্রানজিশন বা বাস্তবায়ন onNewIntent যা সঠিকভাবে অন্তর্মুখী বার্তাগুলির হ্যান্ডেল করতে Firebase ক্লাউড মেসেজিং জন্য প্রয়োজনীয়।

একটি কাস্টম এন্ট্রি পয়েন্ট কার্যকলাপ কনফিগার করা

আপনার অ্যাপ্লিকেশন ডিফল্ট ব্যবহার করে না এমন UnityPlayerActivity আপনি সরবরাহকৃত অপসারণ করতে হবে AndroidManifest.xml এবং নিশ্চিত করুন যে আপনার কাস্টম কার্যকলাপ সঠিকভাবে সব ট্রানজিশন পরিচালনা অ্যান্ড্রয়েড ভ্রমণ লাইফ সাইকল (এই কিভাবে করতে হবে একটি উদাহরণ নিম্নে দেখানো হল)। আপনার কাস্টম কার্যকলাপ প্রসারিত তাহলে 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 সি ++ 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 ডিভাইস টার্গেটিং এর জন্য একটি রেজিস্ট্রেশন টোকেন তৈরি করে। যখন একটি টোকেন তৈরি হয়, লাইব্রেরি শনাক্তকারী এবং কনফিগারেশন ডেটা ফায়ারবেসে আপলোড করে। আপনি যদি টোকেন ব্যবহার করার আগে একটি স্পষ্ট অপ্ট-ইন পেতে চান, তাহলে আপনি FCM (এবং অ্যান্ড্রয়েড, অ্যানালিটিক্সে) নিষ্ক্রিয় করে কনফিগার করার সময় প্রজন্মকে প্রতিরোধ করতে পারেন। এটি করার জন্য, আপনার জন্য একটি মেটাডেটা মান যোগ Info.plist (আপনার না GoogleService-Info.plist ) iOS এ, অথবা আপনার 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>

যখন ব্যবহারকারীরা স্কিমের একটি লিঙ্ক সহ একটি বিজ্ঞপ্তি ট্যাপ করে এবং আপনি যে হোস্টটি নির্দিষ্ট করেছেন, তখন আপনার অ্যাপটি লিংকটি পরিচালনা করার জন্য এই অভিপ্রায় ফিল্টারের সাথে কার্যকলাপ শুরু করবে।

পরবর্তী পদক্ষেপ

ক্লায়েন্ট অ্যাপ সেট আপ করার পরে, আপনি ফায়ারবেস দিয়ে ডাউনস্ট্রিম এবং টপিক মেসেজ পাঠাতে প্রস্তুত। আরো জানতে, দেখুন দ্রুতশুরু নমুনা যা এই কার্যকারিতা প্রমান।

আপনার অ্যাপে অন্য, আরো উন্নত আচরণ যোগ করতে, একটি অ্যাপ সার্ভার থেকে বার্তা পাঠানোর জন্য নির্দেশিকা দেখুন:

মনে রাখবেন যে আপনি একটি প্রয়োজন হবে সার্ভারে বাস্তবায়ন এই বৈশিষ্ট্যগুলির ব্যবহার করতে হবে।