Google is committed to advancing racial equity for Black communities. See how.
This page was translated by the Cloud Translation API.
Switch to English

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

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

ফায়ারবেস এবং এফসিএম এসডিকে সেট আপ করুন

অ্যান্ড্রয়েড

  1. আপনি যদি ইতিমধ্যে না থাকেন তবে ফায়ারবেস আপনার সি ++ প্রকল্পে যুক্ত করুন

    • লিঙ্কযুক্ত সেটআপ নির্দেশাবলীতে, ফায়ারবেস সি ++ এসডিকে ব্যবহারের জন্য ডিভাইস এবং অ্যাপের প্রয়োজনীয়তাগুলি পর্যালোচনা করুন, আপনার অ্যাপ তৈরি করতে সিএমকে ব্যবহার করার পরামর্শ সহ the

    • আপনার প্রকল্প-স্তরের build.gradle ফাইলটিতে আপনার buildscript এবং allprojects উভয় বিভাগে allprojects buildscript সংগ্রহস্থল অন্তর্ভুক্ত করার বিষয়টি নিশ্চিত করুন।

  2. জেএনআই এনভায়রনমেন্ট এবং ক্রিয়াকলাপে উত্তীর্ণ হয়ে একটি ফায়ারবেস অ্যাপ্লিকেশন তৈরি করুন:

    app = ::firebase::App::Create(::firebase::AppOptions(), jni_env, activity);

  3. এমন একটি শ্রেণী নির্ধারণ করুন যা firebase::messaging::Listener ইন্টারফেস প্রয়োগ করে।

  4. অ্যাপে পাস করা এবং একটি নির্মিত শ্রোতা:

    ::firebase::messaging::Initialize(app, listener);
    এফসিএম শুরু করুন

  5. গুগল প্লে পরিষেবাগুলি এসডিকে নির্ভর করে এমন অ্যাপ্লিকেশনগুলিতে বৈশিষ্ট্যগুলি অ্যাক্সেস করার আগে ডিভাইসটি একটি সামঞ্জস্যপূর্ণ গুগল প্লে পরিষেবাগুলির APK পরীক্ষা করা উচিত। আরও শিখতে, গুগল প্লে পরিষেবাগুলির APK জন্য চেক করুন

আইওএস

  1. আপনার একটি বৈধ APNs শংসাপত্র প্রয়োজন। আপনার যদি ইতিমধ্যে একটি না থাকে তবে প্রভিশন APNs এসএসএল শংসাপত্রগুলি দেখুন
  2. আপনি ইতিমধ্যে না থাকলে, আপনার সি ++ প্রকল্পে ফায়ারবেস যুক্ত করুন । তারপরে, আপনার প্রকল্পটি এফসিএমের জন্য সেট আপ করতে:
    1. আপনার প্রকল্পের পডফাইলে এফসিএম নির্ভরতা:
      pod 'Firebase/Messaging'
      যুক্ত করুন
    2. ফায়ারবেস সি ++ এসডিকে থেকে আপনার এক্সকোড প্রকল্পে firebase_messaging.framework firebase.framework এবং firebase_messaging.framework ফ্রেমওয়ার্কগুলি টানুন।
  3. পুশ বিজ্ঞপ্তিগুলি সক্ষম করতে আপনার এক্সকোড প্রকল্পটি কনফিগার করুন:

    1. নেভিগেটর অঞ্চল থেকে প্রকল্পটি নির্বাচন করুন।
    2. সম্পাদক এলাকা থেকে প্রকল্পের লক্ষ্য নির্বাচন করুন।
    3. সম্পাদক অঞ্চল থেকে সাধারণ ট্যাবটি নির্বাচন করুন।

      1. লিঙ্কযুক্ত ফ্রেমওয়ার্ক এবং লাইব্রেরিগুলিতে নিচে স্ক্রোল করুন, তারপরে ফ্রেমওয়ার্কগুলি যুক্ত করতে + বোতামটি ক্লিক করুন।
      2. প্রদর্শিত উইন্ডোতে, ব্যবহারকারীনোটিকেশন.ফ্রেমওয়ার্কটিতে স্ক্রোল করুন, সেই প্রবেশটিতে ক্লিক করুন, এবং তারপরে অ্যাড ক্লিক করুন

        এই কাঠামোটি কেবল এক্সকোড ভি 8 এবং এর পরে প্রদর্শিত হবে এবং এটি এই লাইব্রেরির জন্য প্রয়োজনীয়।

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

      1. পুশ বিজ্ঞপ্তিগুলি চালু করুন
      2. ব্যাকগ্রাউন্ড মোডে নীচে স্ক্রোল করুন, তারপরে এটি চালু করুন
      3. পটভূমি মোডের অধীনে দূরবর্তী বিজ্ঞপ্তিগুলি নির্বাচন করুন।
  4. একটি ফায়ারবেস অ্যাপ বস্তু তৈরি করুন:

    app = ::firebase::App::Create(::firebase::AppOptions());

  5. এমন একটি শ্রেণী নির্ধারণ করুন যা firebase::messaging::Listener ইন্টারফেস প্রয়োগ করে।

  6. অ্যাপে পাস করা এবং একটি নির্মিত শ্রোতা:

    ::firebase::messaging::Initialize(app, listener);
    ফায়ারবেস ক্লাউড মেসেজিং শুরু করুন

ডিভাইস নিবন্ধকরণ টোকেন অ্যাক্সেস করুন

ফায়ারবেস ক্লাউড মেসেজিংয়ের পাঠাগারটি শুরু করার পরে, ক্লায়েন্ট অ্যাপ্লিকেশনটির জন্য একটি নিবন্ধকরণ টোকেনের জন্য অনুরোধ করা হয়েছে। অ্যাপটি OnTokenReceived কলব্যাকের সাথে টোকন গ্রহণ করবে, যা ক্লাসে সংজ্ঞায়িত করা উচিত যা OnTokenReceived firebase::messaging::Listener প্রয়োগ করে।

আপনি যদি সেই নির্দিষ্ট ডিভাইসটিকে টার্গেট করতে চান তবে আপনার এই টোকেনটিতে অ্যাক্সেস দরকার।

অ্যান্ড্রয়েডে বার্তা বিতরণ সম্পর্কে নোট

যখন অ্যাপটি একেবারেই চলছে না এবং কোনও ব্যবহারকারী কোনও বিজ্ঞপ্তিতে টোকা দেয়, তখন বার্তাটি ডিফল্টরূপে এফসিএম এর অন্তর্নির্মিত কলব্যাকগুলিতে আসে না। এই ক্ষেত্রে, অ্যাপ্লিকেশন শুরু করতে ব্যবহৃত Intent মাধ্যমে বার্তা পেইলগুলি প্রাপ্ত হয়। FCM এগিয়ে সি ++ লাইব্রেরি কলব্যাক এইসব অন্তর্মুখী বার্তাগুলির আছে করার জন্য, আপনাকে পদ্ধতি ওভাররাইড করতে প্রয়োজন onNewIntent আপনার কার্যকলাপ এবং পাস Intent করার MessageForwardingService

import com.google.firebase.messaging.MessageForwardingService;

class MyActivity extends Activity {
  private static final String TAG = "MyActvity";

  @Override
  protected void onNewIntent(Intent intent) {
    Log.d(TAG, "A message was sent to this app while it was in the background.");
    Intent message = new Intent(this, MessageForwardingService.class);
    message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
    message.putExtras(intent);
    message.setData(intent.getData());
    startService(message);
  }
}

অ্যাপটি পটভূমিতে থাকাকালীন প্রাপ্ত বার্তাগুলিতে তাদের নোটিফিকেশন ফিল্ডের সামগ্রীটি সিস্টেম ট্রে বিজ্ঞপ্তিটি তৈরি করতে ব্যবহৃত হয়েছে, তবে সেই বিজ্ঞপ্তি সামগ্রীটি এফসিএম-তে জানানো হবে না। অর্থাৎ Message::notification বাতিল হয়ে যাবে।

সংক্ষেপে:

অ্যাপের অবস্থা বিজ্ঞপ্তি ডেটা দুটোই
অগ্রভাগ OnMessageReceived OnMessageReceived OnMessageReceived
পটভূমি সিস্টেম ট্রে OnMessageReceived বিজ্ঞপ্তি: সিস্টেম ট্রে
ডেটা: অভিপ্রায় অতিরিক্ত

অ্যান্ড্রয়েডে কাস্টম বার্তা হ্যান্ডলিং

ডিফল্টরূপে, অ্যাপটিতে প্রেরিত বিজ্ঞপ্তিগুলি ::firebase::messaging::Listener::OnMessageReceived , তবে কিছু ক্ষেত্রে আপনি ডিফল্ট আচরণকে ওভাররাইড করতে চাইতে পারেন। অ্যান্ড্রয়েডে এটি করার জন্য আপনাকে কাস্টম ক্লাসগুলি লিখতে হবে যা com.google.firebase.messaging.cpp.ListenerService প্রসারিত করার পাশাপাশি আপনার প্রকল্পের AndroidManifest.xml com.google.firebase.messaging.cpp.ListenerService আপডেট করবে।

ListenerService পদ্ধতি ওভাররাইড করুন।

ListenerService জাভা ক্লাস যা অ্যাপ্লিকেশনটিতে প্রেরিত আগত বার্তাগুলি বাধা দেয় এবং সেগুলি সি ++ গ্রন্থাগারে নিয়ে যায়। অ্যাপ্লিকেশনটি অগ্রভাগে থাকা অবস্থায় (বা যখন অ্যাপ্লিকেশনটি পটভূমি হয় এবং এটি কেবলমাত্র ডেটা পেডলোড পায়), বার্তাগুলি এই শ্রেণিতে প্রদত্ত কলব্যাকগুলির মধ্যে একটির মধ্য দিয়ে যাবে। বার্তা হ্যান্ডলিংয়ে কাস্টম আচরণ যুক্ত করতে, আপনাকে এফসিএম এর ডিফল্ট ListenerService :

import com.google.firebase.messaging.cpp.ListenerService;

class MyListenerService extends ListenerService {

পদ্ধতি অগ্রাহ্য করে ListenerService.onMessageReceived , আপনার প্রাপ্ত উপর ভিত্তি করে কর্ম সম্পাদন করতে পারবেন RemoteMessage বস্তু এবং বার্তা তথ্য পাবেন:

@Override
public void onMessageReceived(RemoteMessage message) {
  Log.d(TAG, "A message has been received.");
  // Do additional logic...
  super.onMessageReceived(message);
}

ListenerService আরও কয়েকটি পদ্ধতি রয়েছে যা কম ঘন ঘন ব্যবহৃত হয়। এগুলি পাশাপাশি ওভাররাইড করা যেতে পারে, আরও তথ্যের জন্য ফায়ারবেসমেসেজিং সার্ভিস রেফারেন্স দেখুন।

@Override
public void onDeletedMessages() {
  Log.d(TAG, "Messages have been deleted on the server.");
  // Do additional logic...
  super.onDeletedMessages();
}

@Override
public void onMessageSent(String messageId) {
  Log.d(TAG, "An outgoing message has been sent.");
  // Do additional logic...
  super.onMessageSent(messageId);
}

@Override
public void onSendError(String messageId, Exception exception) {
  Log.d(TAG, "An outgoing message encountered an error.");
  // Do additional logic...
  super.onSendError(messageId, exception);
}

AndroidManifest.xml আপডেট করুন

আপনার কাস্টম ক্লাসগুলি একবার লেখা হয়ে গেলে, কার্যকর হওয়ার জন্য সেগুলি অবশ্যই AndroidManifest.xml অন্তর্ভুক্ত করা উচিত। ম্যানিফেস্টে <manifest> ট্যাগের মধ্যে যথাযথ বৈশিষ্ট্য ঘোষণা করে মার্জ সরঞ্জামগুলি অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.firebase.messaging.cpp.samples"
    xmlns:tools="http://schemas.android.com/tools">

firebase_messaging_cpp.aar সংরক্ষণাগারে একটি AndroidManifest.xml ফাইল রয়েছে যা AndroidManifest.xml ডিফল্ট ListenerService ঘোষণা করে। এই ম্যানিফেস্টটি সাধারণত প্রকল্পের নির্দিষ্ট ম্যানিফেস্টের সাথে ListenerService হয় যা ListenerService চালাতে সক্ষম is এই ListenerService cusom শ্রোতা পরিষেবাতে দিয়ে প্রতিস্থাপিত করা প্রয়োজন। এটি ডিফল্ট ListenerService পরিষেবা অপসারণ এবং কাস্টম পরিষেবা যুক্ত করে সম্পন্ন হয়েছে যা আপনার প্রকল্পগুলির AndroidManifest.xml ফাইলটি নিম্নলিখিত লাইনগুলির সাহায্যে সম্পন্ন করা যেতে পারে:

<service android:name="com.google.firebase.messaging.cpp.ListenerService"
         tools:node="remove" />
<service android:name="com.google.firebase.messaging.cpp.samples.MyListenerService"
         android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
  </intent-filter>
</service>

স্বয়ংক্রিয় সূচনা প্রতিরোধ করুন

এফসিএম একটি ইনস্ট্যান্স আইডি উত্পন্ন করে, যা এফসিএম-এর মধ্যে নিবন্ধকরণ টোকেন হিসাবে ব্যবহৃত হয়। যখন কোনও ইনস্ট্যান্স আইডি তৈরি করা হয় তখন গ্রন্থাগারটি ফায়ারবেসে আইডেন্টিফায়ার এবং কনফিগারেশন ডেটা আপলোড করে। । এটি করার জন্য, Info.plist আপনার Info.plist (আপনার Info.plist GoogleService-Info.plist ) একটি মেটাডেটা মান যুক্ত GoogleService-Info.plist বা অ্যান্ড্রয়েডে আপনার AndroidManifest.xml GoogleService-Info.plist :

অ্যান্ড্রয়েড

<?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::SetTokenRegistrationOnInitEnabled(true);

এই মানটি একবার সেট হয়ে গেলে অ্যাপ্লিকেশনটির পুনরায় শুরু হয় across

এফসিএম আপনার অ্যাপ্লিকেশনটিতে গভীর লিঙ্কযুক্ত বার্তাগুলি প্রেরণের মঞ্জুরি দেয়। গভীর লিঙ্কযুক্ত বার্তাগুলি গ্রহণ করতে, আপনাকে অবশ্যই আপনার অ্যাপ্লিকেশনটির জন্য গভীর লিঙ্কগুলি পরিচালনা করে এমন ক্রিয়াকলাপে একটি নতুন উদ্দেশ্য ফিল্টার যুক্ত করতে হবে। অভিযুক্ত ফিল্টারটি আপনার ডোমেনের গভীর লিঙ্কগুলি ধরা উচিত। আপনার বার্তাগুলিতে যদি কোনও গভীর লিঙ্ক না থাকে তবে এই কনফিগারেশনটি প্রয়োজনীয় নয়। অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল:

<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>

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

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

ক্লায়েন্ট অ্যাপ্লিকেশন সেট আপ করার পরে, আপনি ফায়ারবেস দিয়ে ডাউন স্ট্রিম এবং বিষয় বার্তা প্রেরণের জন্য প্রস্তুত। আরও শিখতে, এই কার্যকারিতাটি ક્વિક স্টার্ট নমুনায় প্রদর্শিত হবে যা আপনি ডাউনলোড, চালানো এবং পর্যালোচনা করতে পারেন।

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

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