Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

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

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

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

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

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

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

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

        এই কাঠামোটি কেবলমাত্র এক্সকোড ভি 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 জাভা ক্লাস যা অ্যাপটিতে প্রেরিত আগত বার্তাগুলি বাধা দেয় এবং সেগুলি সি ++ লাইব্রেরিতে নিয়ে যায়। অ্যাপ্লিকেশনটি অগ্রভাগে থাকা অবস্থায় (বা যখন অ্যাপ্লিকেশনটি পটভূমি হয় এবং এটি কেবলমাত্র ডেটা পেডলোড পায়), বার্তা এই শ্রেণিতে প্রদত্ত কলব্যাকগুলির মধ্যে একটির মধ্য দিয়ে যাবে through বার্তা হ্যান্ডলিংয়ে কাস্টম আচরণ যুক্ত করতে, আপনাকে এফসিএম এর ডিফল্ট 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 :

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

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

আইওএস

0 বি 805896f0

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>

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

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

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

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

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