আমি সমস্ত অ্যাপ ব্যবহারকারীদের (অ্যান্ড্রয়েডে) একটি বিজ্ঞপ্তি প্রেরণের চেষ্টা করছি, ফায়ারবেস অ্যাডমিন কনসোলের মাধ্যমে কোনও বিজ্ঞপ্তি প্রেরণ করা হলে কী ঘটে তা মূলত নকল করেই। আমি যে সিআরএল কমান্ডটি দিয়ে শুরু করব তা এখানে:
curl --insecure - Header "অনুমোদন: কী = AIzaSyBidmyauthkeyisfineL-6NcJxj-1JUvEM" - শিরোনাম "বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / json" -d "{notification" বিজ্ঞপ্তি \ ": \ title" শিরোনাম \ ": \" নোট -Title \ ", body" বডি \ ": \" নোট-বডি \ "}}" https://fcm.googleapis.com/fcm/send
আপনার চোখের দিকে আরও সহজ হওয়ার জন্য জেএসএন পার্স করে গেছেন:
{
"notification":{
"title":"note-Title",
"body":"note-Body"
}
}
যে প্রতিক্রিয়া ফিরে আসে তা কেবল দুটি অক্ষর:
প্রতি
এটিই, "টু" শব্দটি। (শিরোনাম 400 এর প্রতিবেদন করুন) আমার সন্দেহ হয় যে এটি আমার জেএসএন-তে "টু" না থাকার সাথে সম্পর্কযুক্ত। এমনকি একটি "টু" এর জন্য কী রাখবে? আমার কোনও বিষয় সংজ্ঞায়িত হয়নি, এবং ডিভাইসগুলি কোনও কিছুর জন্য তাদের নিবন্ধভুক্ত হয়নি। তবুও, তারা এখনও ফায়ারবেস অ্যাডমিন প্যানেল থেকে বিজ্ঞপ্তি পেতে সক্ষম হয়।
ফায়ারবেস বিজ্ঞপ্তি প্রসেসিংয়ের আশ্চর্যজনক সীমাবদ্ধতার কারণে আমি একটি "কেবলমাত্র ডেটা" জেএসওন প্যাকেজটি দেখতে চাই, যার মাধ্যমে যদি আপনার অ্যাপ্লিকেশনটি অগ্রভাগে থাকে তবে বিজ্ঞপ্তিটি আপনার হ্যান্ডলারের দ্বারা প্রক্রিয়াজাত হয়ে যায়, তবে যদি আপনার অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে থাকে তবে তা পাওয়া যায় ফায়ারবেস পরিষেবা দ্বারা স্বতন্ত্রভাবে প্রক্রিয়াজাত করা হয়েছে এবং আপনার বিজ্ঞপ্তি হ্যান্ডলারের কাছে কখনও যায় নি। আপনি যদি API এর মাধ্যমে আপনার বিজ্ঞপ্তি অনুরোধ জমা দেন তবে এটিকে প্রায় কাজ করা যেতে পারে, তবে আপনি কেবলমাত্র ডেটা দিয়ে তা করেন। (যা তখন একই বার্তায় আইওএস এবং অ্যান্ড্রয়েড হ্যান্ডেল করার ক্ষমতাটি ভেঙে দেয়)) আমার জেএসএনের কোনওটিতে "তথ্য" দিয়ে "বিজ্ঞপ্তি" প্রতিস্থাপনের কোনও প্রভাব নেই।
ঠিক আছে, তারপরে আমি এখানে সমাধানটি চেষ্টা করেছি: ফায়ারবেস জাভা সার্ভারটি সমস্ত ডিভাইসে পুশ বিজ্ঞপ্তি পাঠানোর জন্য যা বলে মনে হচ্ছে "ঠিক আছে, যদিও অ্যাডমিন কনসোলের মাধ্যমে প্রত্যেককে বিজ্ঞপ্তি দেওয়া সম্ভব ... এটিআইপি এর মাধ্যমে সত্যই সম্ভব নয়। " প্রতিটি ক্লায়েন্টকে কোনও বিষয়ে সাবস্ক্রাইব করতে হবে এবং তারপরে সেই বিষয়ে বিজ্ঞপ্তিটি চাপিয়ে দেওয়া হবে। সুতরাং অনক্রিটে প্রথম কোড:
FirebaseMessaging.getInstance().subscribeToTopic("allDevices");
তারপরে আমি নতুন জেএসএন প্রেরণ:
{
"notification":{
"title":"note-Title",
"body":"note-Body"
},
"to":"allDevices"
}
তাই এখন আমি কমপক্ষে সার্ভার থেকে একটি বাস্তব প্রতিক্রিয়া পাচ্ছি। জেএসওএন প্রতিক্রিয়া:
{
"multicast_id":463numbersnumbers42000,
"success":0,
"failure":1,
"canonical_ids":0,
"results":
[
{
"error":"InvalidRegistration"
}
]
}
এবং এটি একটি এইচটিটিপি কোড 200 এর সাথে আসে Ok ঠিক আছে ... https://firebase.google.com/docs/cloud-messaging/http-server-ref অনুযায়ী একটি "200 অবৈধ নিবন্ধকরণ" সহ একটি কোড 200 এর অর্থ রেজিস্ট্রেশন টোকেনের সাথে সমস্যা । হতে পারে? কারণ ডকুমেন্টেশনের সেই অংশটি মেসেজিং সার্ভারের জন্য। বিজ্ঞপ্তি সার্ভার একই? অস্পষ্ট। আমি অন্য কোথাও দেখতে পাচ্ছি যে বিষয়টি সক্রিয় হওয়ার আগে কয়েক ঘন্টা সময় নিতে পারে। দেখে মনে হচ্ছে এটি নতুন চ্যাট রুম তৈরি করার জন্য এটি অকেজো করে তুলবে, তাই এটিও বন্ধ মনে হচ্ছে।
আমি খুব উত্তেজিত হয়েছি যখন আমি স্ক্র্যাচ থেকে এমন একটি অ্যাপ্লিকেশন কোড করতে পারি যা ফায়ারবেস আগে কখনও ব্যবহার না করায় মাত্র কয়েক ঘন্টার মধ্যে বিজ্ঞপ্তি পেয়েছিল। দেখে মনে হচ্ছে এটি স্ট্রাইপ ডটকম ডকুমেন্টেশনের পর্যায়ে পৌঁছানোর আগে অনেক দীর্ঘ পথ যেতে হবে।
নীচের লাইন: কেউ কি জানেন যে অ্যাডমিন কনসোল কার্যকারিতাটি মিরর করতে অ্যাপ্লিকেশন চালিত সমস্ত ডিভাইসে বার্তা প্রেরণের জন্য JSON কী সরবরাহ করবে?
FirebaseInstanceIdService