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

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

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

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

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

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

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

আপনার যদি নির্দিষ্ট নেটওয়ার্ক প্রকারের সাথে সংযোগ স্থাপনের প্রয়োজন হয়, দেখুন নেটওয়ার্ক অবস্থা পড়া

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

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

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

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

Wi-Fi সংযোগের জন্য অনুরোধ করুন

ব্যবহারের ক্ষেত্রে উচ্চ-ব্যান্ডউইথ নেটওয়ার্ক অ্যাক্সেসের প্রয়োজন, যেমন বড় ফাইল পরিবহন বা স্ট্রিমিং মিডিয়া, একটি উচ্চ-ব্যান্ডউইথ পরিবহনের সাথে সংযোগের অনুরোধ করুন, যেমন 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.
    }
}
connectivityManager.requestNetwork(
    NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
    callback
)

জাভা

ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
    public void onAvailable(Network network) {
        super.onAvailable(network);
        // The Wi-Fi network has been acquired. Bind it to use this network by default.
        connectivityManager.bindProcessToNetwork(network);
    }

    public void onLost(Network network) {
        super.onLost(network);
        // Called when a network disconnects or otherwise no longer satisfies this request or callback.
    }
};
connectivityManager.requestNetwork(
        new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
        callback
);

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

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

কোটলিন

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

জাভা

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

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

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

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

কোটলিন

context.startActivity(Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"))

জাভা

context.startActivity(new Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"));

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

ইউজার ইন্টারফেস বিবেচনা

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

চিত্র 1 একটি সঙ্গীত অ্যাপ্লিকেশন দেখায়. অ্যাপটি ব্যবহারকারীকে একটি নিম্ন-ব্যান্ডউইথ নেটওয়ার্কে সঙ্গীত ব্রাউজ করতে দেয় এবং ব্যবহারকারীকে শুধুমাত্র একটি নতুন Wi-Fi নেটওয়ার্ক যোগ করতে হবে যদি তারা সঙ্গীত ডাউনলোড বা স্ট্রিম করতে চায়।

মিউজিক ডাউনলোড হচ্ছে

চিত্র 1. সঙ্গীত ডাউনলোড করার জন্য একটি সঙ্গীত অ্যাপ্লিকেশন প্রবাহ।

শক্তি এবং তথ্য ব্যবহার বিবেচনা

ব্যাটারি লাইফ রক্ষা করতে এবং মোবাইল ডেটার ব্যবহার কমাতে সাহায্য করতে, যতক্ষণ না Wear OS ডিভাইস এলটিই বা মিটারযুক্ত সংযোগের পরিবর্তে একটি ব্লুটুথ বা ওয়াই-ফাই সংযোগ পুনঃপ্রতিষ্ঠিত না করে, ততক্ষণ পর্যন্ত অ্যানালিটিক্স রিপোর্টিং বা লগ সংগ্রহের মতো কোনও অপ্রয়োজনীয় নেটওয়ার্কিং কাজ স্থগিত করুন৷

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

বিজ্ঞপ্তি পাঠানোর জন্য, সরাসরি Firebase ক্লাউড মেসেজিং (FCM) ব্যবহার করুন।

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

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

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

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

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

আরও তথ্য এবং পেলোডের উদাহরণের জন্য, FCM বার্তাগুলি সম্পর্কে দেখুন।

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

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

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

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

সীমাবদ্ধতা সঙ্গে সময়সূচী

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

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

    NetworkType CONNECTED না UNMETERED কিনা তা নির্দিষ্ট করুন৷ UNMETERED হল বড় ডেটা ট্রান্সফারের জন্য, যখন CONNECTED হল ছোট ট্রান্সফারের জন্য৷

  • চার্জ করার সময় একটি অনুরোধ শিডিউল করুন।

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

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