স্বতন্ত্র ডিভাইসে একটি নেটওয়ার্কের মাধ্যমে সরাসরি যোগাযোগ করুন

Wear OS by Google এর মাধ্যমে, একটি ঘড়ি সরাসরি একটি নেটওয়ার্কের সাথে যোগাযোগ করতে পারে, কোনও Android বা iOS ফোনে অ্যাক্সেস ছাড়াই। Wear OS অ্যাপটিকে নেটওয়ার্কের সাথে সংযুক্ত করতে ডেটা লেয়ার API ব্যবহার করবেন না। পরিবর্তে, এই নির্দেশিকাতে দেওয়া নির্দেশিকা এবং পদক্ষেপগুলি অনুসরণ করুন।

নেটওয়ার্ক অ্যাক্সেস

Wear OS অ্যাপগুলি নেটওয়ার্ক অনুরোধ করতে পারে। যখন একটি ঘড়ির সাথে একটি ফোনের ব্লুটুথ সংযোগ থাকে, তখন ঘড়ির নেটওয়ার্ক ট্র্যাফিক সাধারণত ফোনের মাধ্যমে প্রক্সি করা হয়।

যখন কোনও ফোন অনুপলব্ধ থাকে, তখন ঘড়ির হার্ডওয়্যারের উপর নির্ভর করে Wi-Fi এবং সেলুলার নেটওয়ার্ক ব্যবহার করা হয়। Wear OS প্ল্যাটফর্ম নেটওয়ার্কগুলির মধ্যে রূপান্তর পরিচালনা করে।

আপনি HTTP, TCP, এবং UDP এর মতো প্রোটোকল ব্যবহার করতে পারেন। তবে, CookieManager ক্লাস সহ android.webkit API গুলি উপলব্ধ নয়। আপনি অনুরোধ এবং প্রতিক্রিয়াগুলিতে হেডারগুলি পড়ে এবং লিখে কুকি ব্যবহার করতে পারেন।

নিয়মিত বিরতিতে পোলিং সহ, অ্যাসিঙ্ক্রোনাস অনুরোধের জন্য WorkManager ব্যবহার করুন।

যদি আপনার নির্দিষ্ট ধরণের নেটওয়ার্কের সাথে সংযোগ স্থাপনের প্রয়োজন হয়, তাহলে রিডিং নেটওয়ার্ক স্টেট দেখুন।

উচ্চ-ব্যান্ডউইথ নেটওয়ার্ক অ্যাক্সেস

Wear OS প্ল্যাটফর্মটি সর্বোত্তম সামগ্রিক ব্যবহারকারীর অভিজ্ঞতা প্রদানের লক্ষ্যে নেটওয়ার্ক সংযোগ পরিচালনা করে। প্ল্যাটফর্মটি দুটি চাহিদার ভারসাম্য বজায় রেখে ডিফল্ট সক্রিয় নেটওয়ার্ক নির্বাচন করে: দীর্ঘ ব্যাটারি লাইফ এবং নেটওয়ার্ক ব্যান্ডউইথ।

যখন ব্যাটারি সংরক্ষণকে অগ্রাধিকার দেওয়া হয়, তখন সক্রিয় নেটওয়ার্কে বড় ফাইল পরিবহন বা স্ট্রিমিং মিডিয়ার মতো নেটওয়ার্ক কাজের জন্য পর্যাপ্ত ব্যান্ডউইথ নাও থাকতে পারে।

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

ওয়াই-ফাই সংযোগের জন্য অনুরোধ করুন

যেসব ক্ষেত্রে উচ্চ-ব্যান্ডউইথ নেটওয়ার্ক অ্যাক্সেসের প্রয়োজন হয়, যেমন বড় ফাইল পরিবহন বা স্ট্রিমিং মিডিয়া, সেগুলির জন্য Wi-Fi এর মতো উচ্চ-ব্যান্ডউইথ পরিবহনের মাধ্যমে সংযোগের অনুরোধ করুন। এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

val callback = object : ConnectivityManager.NetworkCallback() {
    override fun onAvailable(network: Network) {
        super.onAvailable(network)
        // The Wi-Fi network has been acquired. Bind it to use this network by default.
        connectivityManager.bindProcessToNetwork(network)
    }

    override fun onLost(network: Network) {
        super.onLost(network)
        // Called when a network disconnects or otherwise no longer satisfies this request
        // or callback.
    }
}

fun requestWifiNetwork() {
    connectivityManager.requestNetwork(
        NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
        callback
    )
}

নেটওয়ার্ক অর্জন তাৎক্ষণিকভাবে সম্ভব নাও হতে পারে, কারণ ব্যাটারি সংরক্ষণের জন্য ঘড়ির ওয়াই-ফাই বা সেলুলার রেডিও বন্ধ থাকতে পারে। যদি ঘড়িটি নেটওয়ার্কের সাথে সংযোগ করতে না পারে, তাহলে আপনার NetworkCallback ইনস্ট্যান্সের onAvailable() পদ্ধতিটি কল করা হবে না।

একবার onAvailable() কল করা হলে, ডিভাইসটি NetworkCallback রিলিজ না হওয়া পর্যন্ত Wi-Fi নেটওয়ার্কের সাথে সংযুক্ত থাকার চেষ্টা করে। ব্যাটারি লাইফ সংরক্ষণের জন্য, যখন আপনার আর Wi-Fi নেটওয়ার্কের প্রয়োজন হবে না তখন নিম্নলিখিত উদাহরণে দেখানো কলব্যাক রিলিজ করুন।

connectivityManager.bindProcessToNetwork(null)
connectivityManager.unregisterNetworkCallback(callback)

Wi-Fi সেটিংস কার্যকলাপ চালু করুন

কোনও Wi-Fi নেটওয়ার্কের অনুরোধ করার সময়, সিস্টেমটি কোনও সংরক্ষিত নেটওয়ার্কের সাথে সংযোগ স্থাপনের চেষ্টা করে যদি কোনও নেটওয়ার্ক কনফিগার করা থাকে এবং রেঞ্জের মধ্যে থাকে। যদি কোনও সংরক্ষিত Wi-Fi নেটওয়ার্ক উপলব্ধ না থাকে, তাহলে আপনার NetworkCallback ইনস্ট্যান্সের onAvailable কলব্যাক পদ্ধতিটি কল করা হয় না।

যদি আপনি নেটওয়ার্ক অনুরোধের সময়সীমা শেষ করার জন্য একটি Handler ব্যবহার করেন, তাহলে টাইমআউট হওয়ার সময় আপনি ব্যবহারকারীকে একটি Wi-Fi নেটওয়ার্ক যোগ করার নির্দেশ দিতে পারেন। নিম্নলিখিত উদ্দেশ্য ব্যবহার করে ব্যবহারকারীকে সরাসরি Wi-Fi নেটওয়ার্ক যোগ করার কার্যকলাপে পাঠান:

val networkSettingsAction = "com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"
val intent = Intent(networkSettingsAction).apply {
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
context.startActivity(intent)

সেটিংস কার্যকলাপ চালু করতে, আপনার অ্যাপের CHANGE_WIFI_STATE অনুমতি থাকতে হবে।

ব্যবহারকারী ইন্টারফেস বিবেচনা

যদি আপনার অ্যাপের উচ্চ-ব্যান্ডউইথ অপারেশনের জন্য একটি নতুন ওয়াই-ফাই নেটওয়ার্কের সাথে সংযোগের প্রয়োজন হয়, তাহলে আপনার এটি নির্বিঘ্নে অর্জন করা উচিত এবং প্রয়োজন অনুসারে এটি প্রকাশ করা উচিত। যদি কোনও ওয়াই-ফাই নেটওয়ার্ক উপলব্ধ না থাকে, তাহলে ব্যাখ্যা করুন যে বৈশিষ্ট্যটির জন্য ওয়াই-ফাই প্রয়োজন এবং ওয়াই-ফাই সেটিংস অ্যাক্টিভিটি চালু করার জন্য একটি উপায় প্রদান করুন। ব্যবহারকারীকে এমন অ্যাপ বৈশিষ্ট্যগুলি অ্যাক্সেস করতে বাধা দেবেন না যার জন্য উচ্চ-ব্যান্ডউইথ নেটওয়ার্কের প্রয়োজন হয় না।

শক্তি এবং তথ্য ব্যবহারের বিবেচ্য বিষয়গুলি

ব্যাটারির আয়ু কমাতে এবং মোবাইল ডেটা ব্যবহার কমাতে, Wear OS ডিভাইসটি LTE বা মিটারযুক্ত সংযোগের পরিবর্তে ব্লুটুথ বা Wi-Fi সংযোগ পুনরায় স্থাপন না করা পর্যন্ত, বিশ্লেষণ প্রতিবেদন বা লগ সংগ্রহের মতো অপ্রয়োজনীয় নেটওয়ার্কিং কাজগুলি স্থগিত রাখুন।

ক্লাউড মেসেজিং

বিজ্ঞপ্তি পাঠানোর জন্য, সরাসরি Firebase Cloud Messaging (FCM) ব্যবহার করুন।

নেটওয়ার্ক অ্যাক্সেস বা FCM-এর জন্য কোনও API নির্দিষ্টভাবে Wear OS-এর জন্য নয়। নেটওয়ার্কে সংযোগ স্থাপন এবং ক্লাউড মেসেজিং সম্পর্কে বিদ্যমান ডকুমেন্টেশন দেখুন।

FCM Doze-এর সাথে ভালোভাবে কাজ করে এবং এটি ঘড়িতে বিজ্ঞপ্তি পাঠানোর জন্য প্রস্তাবিত উপায়।

আপনার Wear OS অ্যাপটি চালু হলে, ডিভাইসের জন্য একটি রেজিস্ট্রেশন টোকেন সংগ্রহ করে FCM থেকে বার্তা পাঠান। তারপর, যখন আপনার সার্ভার FCM REST এন্ডপয়েন্টে বার্তা পাঠাবে তখন টোকেনটিকে গন্তব্যস্থলের অংশ হিসেবে অন্তর্ভুক্ত করুন। FCM টোকেন দ্বারা চিহ্নিত ডিভাইসে বার্তা পাঠায়।

একটি FCM বার্তা জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (JSON) ফর্ম্যাটে থাকে এবং এতে নিম্নলিখিত পেলোডগুলির একটি বা উভয়ই অন্তর্ভুক্ত থাকতে পারে:

  • নোটিফিকেশন পেলোড: যখন কোনও ঘড়ি কোনও নোটিফিকেশন পেলোড গ্রহণ করে, তখন ডেটা সরাসরি নোটিফিকেশন স্ট্রিমে ব্যবহারকারীর কাছে প্রদর্শিত হয়। যখন ব্যবহারকারী নোটিফিকেশনে ট্যাপ করেন, তখন আপনার অ্যাপটি চালু হয়।
  • ডেটা পেলোড: যখন পেলোডে কাস্টম কী বা মান জোড়ার একটি সেট থাকে। পেলোডটি আপনার Wear OS অ্যাপে ডেটা হিসাবে সরবরাহ করা হয়।

আরও তথ্য এবং পেলোডের উদাহরণের জন্য, বার্তার ধরণ দেখুন।

ডিফল্টরূপে, বিজ্ঞপ্তিগুলি একটি ফোন অ্যাপ থেকে একটি ঘড়িতে ব্রিজ করা হয়। যদি আপনার একটি স্বতন্ত্র Wear OS অ্যাপ এবং একটি সংশ্লিষ্ট ফোন অ্যাপ থাকে, তাহলে ডুপ্লিকেট বিজ্ঞপ্তি আসতে পারে। উদাহরণস্বরূপ, FCM থেকে একটি একক বিজ্ঞপ্তি , যা একটি ফোন এবং একটি ঘড়ি উভয়ের দ্বারা প্রাপ্ত হয়, উভয় ডিভাইসেই স্বাধীনভাবে প্রদর্শিত হতে পারে। আপনি ব্রিজিং API ব্যবহার করে এটি প্রতিরোধ করতে পারেন।

ব্যাকগ্রাউন্ড পরিষেবা ব্যবহার করুন

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

যখন কোনও স্ক্রিন দীর্ঘ সময় ধরে বন্ধ থাকে বা অ্যাম্বিয়েন্ট মোডে প্রবেশ করে, তখন Doze-এর একটি উপসেট ঘটতে পারে এবং ব্যাকগ্রাউন্ডের কাজগুলি নির্দিষ্ট সময়ের জন্য পিছিয়ে দেওয়া যেতে পারে। পরে, যখন ডিভাইসটি দীর্ঘ সময়ের জন্য স্থির থাকে, তখন নিয়মিত Doze ঘটে। WorkManager API-এর মাধ্যমে অনুরোধগুলি নির্ধারণ করুন, যা আপনার অ্যাপকে Doze-নিরাপদ কোড কার্যকর করার জন্য নিবন্ধন করতে দেয়।

সীমাবদ্ধতা সহ সময়সূচী

ব্যাটারি লাইফ সংরক্ষণের জন্য অনুরোধগুলি কনফিগার করার জন্য আপনি সীমাবদ্ধতা ব্যবহার করতে পারেন। আপনার অনুরোধগুলিতে অন্তর্ভুক্ত করার জন্য নিম্নলিখিত সীমাবদ্ধতাগুলির মধ্যে একটি বা একাধিক নির্বাচন করুন:

  • নেটওয়ার্কিং প্রয়োজন এমন একটি অনুরোধ নির্ধারণ করুন।

    NetworkType CONNECTED নাকি UNMETERED নির্দিষ্ট করুন। UNMETERED হল বৃহৎ ডেটা স্থানান্তরের জন্য, আর CONNECTED হল ছোট স্থানান্তরের জন্য।

  • চার্জ করার সময় একটি অনুরোধের সময়সূচী করুন।

  • ডিভাইসটি নিষ্ক্রিয় থাকাকালীন একটি অনুরোধ নির্ধারণ করুন। এটি নিম্ন-অগ্রাধিকারের ব্যাকগ্রাউন্ড কাজ বা সিঙ্ক্রোনাইজেশনের জন্য কার্যকর, বিশেষ করে যখন ডিভাইসটি চার্জ করা হচ্ছে।

আরও তথ্যের জন্য, WorkManager-এর পর্যায়ক্রমিক কাজের উপর সীমাবদ্ধতার প্রভাব নির্দেশিকাটি পর্যালোচনা করুন।