স্ট্যান্ডঅ্যালোন বনাম নন-স্ট্যান্ডঅ্যালোন Wear OS অ্যাপ

আমরা সাজেস্ট করি যে Wear OS অ্যাপ যেন ফোন থেকে আলাদাভাবে কাজ করে যাতে ব্যবহারকারীরা Android বা iOS ফোনে অ্যাক্সেস না থাকলেও ওয়াচে টাস্ক সম্পূর্ণ করতে পারেন। আপনার ওয়াচ অ্যাপের ফোনের সাথে ইন্টার‍্যাক্ট করার প্রয়োজন হলে, আপনাকে অবশ্যই Wear OS অ্যাপকে নন-স্ট্যান্ডঅ্যালোন হিসেবে চিহ্নিত করতে হবে এবং ব্যবহারকারীর কাছে ফোন অ্যাপ উপলভ্য আছে কিনা তা নিশ্চিত করার জন্য পদক্ষেপ নিতে হবে।

আপনার অ্যাপের পরিকল্পনা করা

আপনি Android অ্যাপ বান্ডেল ব্যবহার করে একই অ্যাপ্লিকেশন লিস্টের অধীনে প্রতিটি ব্যবহারকারীর ডিভাইস কনফিগারেশনের জন্য অটোমেটিক অপ্টিমাইজ করা Android প্যাকেজ কিট (APK) তৈরি করতে পারেন। এর ফলে ব্যবহারকারীরা আপনার অ্যাপ চালানোর জন্য প্রয়োজনীয় কোড ও রিসোর্সই শুধু ডাউনলোড করতে পারেন।

Google Play Store-এর মাধ্যমে ডিস্ট্রিবিউট করার জন্য আপনার অ্যাপ সেট-আপ করা সম্পর্কে তথ্য পেতে, Wear OS অ্যাপ প্যাকেজ ও ডিস্ট্রিবিউট করা এবং Android অ্যাপ বান্ডেল ব্যবহার শুরু করার গাইড দেখুন।

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

নেটওয়ার্ক অনুরোধ ও হাই-ব্যান্ডউইথ নেটওয়ার্ক অ্যাক্সেস সম্পর্কে আরও জানতে, Wear OS-এ নেটওয়ার্ক অ্যাক্সেস ও সিঙ্ক করা দেখুন।

Wear OS অ্যাপ হিসেবে কোনও অ্যাপকে সংজ্ঞায়িত করা

আপনার অ্যাপের Android ম্যানিফেস্ট ফাইলে <uses-feature> ট্যাগ অবশ্যই ডিফাইন করতে হবে। এটি যে একটি ওয়াচ অ্যাপ তা বোঝাতে, নিম্নলিখিত ধরনের একটি এন্ট্রি যোগ করুন:

<uses-feature android:name="android.hardware.type.watch" />

কোনও অ্যাপকে স্ট্যান্ডঅ্যালোন বা নন-স্ট্যান্ডঅ্যালোন হিসেবে শনাক্ত করা

ওয়াচ অ্যাপকে স্ট্যান্ডঅ্যালোন বা নন-স্ট্যান্ডঅ্যালোন হিসেবে বিবেচনা করা হয়:

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

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

অ্যাপ পরিবেশন করার সময় Google অ্যাপের স্বতন্ত্র স্ট্যাটাসের নির্ভুলতা যাচাই করে। এই ভ্যালু, হ্যান্ডহেল্ড ডিভাইসের সাথে পেয়ার করা হয়নি এমন Wear OS ডিভাইসের মতো আনটিথারড ডিভাইসে Play Store-এর মধ্যে অ্যাপের দৃশ্যমানতাকে প্রভাবিত করে। যেসব অ্যাপকে ডেভেলপাররা ভুল করে "স্ট্যান্ডঅ্যালোন" হিসেবে চিহ্নিত করেছেন, সেইসব নন-স্ট্যান্ডঅ্যালোন অ্যাপও এইসব আনটিথারড ডিভাইসে ব্যবহারকারীদের জন্য উপলভ্য নয়।

আপনার Wear OS অ্যাপে, আপনার অ্যাপ স্ট্যান্ডঅ্যালোন বা নন-স্ট্যান্ডঅ্যালোন কিনা তা ঘোষণা করতে, Android ম্যানিফেস্ট ফাইলে meta-data এলিমেন্টের com.google.android.wearable.standalone ভ্যালু সেট করুন।

আপনার ওয়াচ অ্যাপ যদি সম্পূর্ণ স্বতন্ত্র, স্ট্যান্ডঅ্যালোন অ্যাপ হয়, তাহলে Google Play Store-এ এটি জানানোর জন্য com.google.android.wearable.standalone-এর ভ্যালু true হিসেবে সেট করুন:

<meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />

আপনার ওয়াচ অ্যাপ যদি স্ট্যান্ড-অলোন না হয় এবং মূল ফিচারের জন্য অন্য অ্যাপের উপর নির্ভর করে, com.google.android.wearable.standalone-এর ভ্যালু false হিসেবে সেট করুন। এর অর্থ হল, ওয়াচ অ্যাপের জন্য অন্য একটি ডিভাইস প্রয়োজন, তবে এটি Google Play Store-এ আপনার অ্যাপের প্রচারের উপর কোনও প্রভাব ফেলে না।

মনে রাখবেন: com.google.android.wearable.standalone-এর ভ্যালু false হলেও, ফোন অ্যাপ ইনস্টল করার আগে ওয়াচ অ্যাপ ইনস্টল করা যেতে পারে। তাই, আপনার ওয়াচ অ্যাপ যদি ডিটেক্ট করে যে কম্প্যানিয়ন ফোনে এই পৃষ্ঠায় বর্ণিত প্রয়োজনীয় ফোন অ্যাপ নেই, তাহলে ব্যবহারকারীকে ফোন অ্যাপ ইনস্টল করার জন্য প্রম্পট করুন।

শেয়ার করা কোড ও ডেটা স্টোরেজ

Wear OS অ্যাপ ও ফোন অ্যাপের মধ্যে কোড শেয়ার করা যেতে পারে। যেমন, নেটওয়ার্কিংয়ের জন্য সাধারণ কোড শেয়ার করা লাইব্রেরিতে থাকতে পারে।

ঐচ্ছিকভাবে, কোড যা ফর্ম ফ্যাক্টরের জন্য নির্দিষ্ট তা আলাদা মডিউলে থাকতে পারে।

আপনি ফোনে যেভাবে ডেটা সেভ করেন, সেইভাবে লোকালি ডেটা সেভ করতে, স্ট্যান্ডার্ড Android স্টোরেজ API ব্যবহার করতে পারবেন। আপনি DataStore ব্যবহার করে কী-ভ্যালু পেয়ার ও টাইপ করা অবজেক্ট স্টোর করতে পারেন অথবা আপনি Room পারসিস্টেন্স লাইব্রেরি ব্যবহার করতে পারেন।

অন্য ডিভাইসে আপনার অ্যাপ শনাক্ত করা

আপনার ওয়াচ অ্যাপ ও সংশ্লিষ্ট ফোন অ্যাপ প্রত্যেকটিই অন্য অ্যাপটি উপলভ্য কিনা তা শনাক্ত করতে পারে।

আপনার ফোন ও ওয়াচ অ্যাপ পেয়ার করা ডিভাইসে CapabilityClient ব্যবহার করে নিজেদের উপস্থিতি বিজ্ঞাপন করতে পারে। এটি স্ট্যাটিক বা ডাইনামিক, যেকোনও উপায়ে করা যেতে পারে।

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

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

ডিভাইসে Play Store উপলভ্য আছে কিনা তা আপনাকে অবশ্যই চেক করে দেখতে হবে, কারণ সব ফোনে—যেমন iPhone—Play Store কাজ করে না।

নিচে উল্লেখ করা বিভাগগুলি দুটি পরিস্থিতির জন্য পেশাদার পদ্ধতি বর্ণনা করে:

  • আপনার স্ট্যান্ডঅ্যালোন ওয়াচ অ্যাপের জন্য ফোন অ্যাপ প্রয়োজন।
  • আপনার ফোন অ্যাপের স্ট্যান্ডঅ্যালোন ওয়াচ অ্যাপ প্রয়োজন।

এছাড়াও, আপনি Datalayer হেল্পার স্যাম্পেল পর্যালোচনা করতে পারেন, যা দেখায় যে কীভাবে Horologist-এর অংশ হিসেবে Datalayer হেল্পার লাইব্রেরি ব্যবহার করতে হয়। এইসব হেল্পার আপনাকে হ্যান্ডহেল্ড ডিভাইস ও Wear OS ডিভাইসের মধ্যে কানেকশন মনিটর করতে দেয়। নিম্নলিখিত বিভাগে বর্ণিত ক্লাস সম্পর্কে আরও তথ্য পেতে, Wear OS API রেফারেন্স দেখুন। এছাড়াও, সেই রেফারেন্সে PhoneTypeHelper ক্লাস সম্পর্কে তথ্য রয়েছে, যার মধ্যে getPhoneDeviceType() মেথড রয়েছে যা আপনার Wear OS অ্যাপকে চেক করতে দেয় যে কম্প্যানিয়ন ফোনটি Android বা iOS ডিভাইস কিনা।

আপনার অ্যাপ শনাক্ত করার জন্য ক্ষমতার নাম নির্দিষ্ট করুন

প্রতিটি ডিভাইসের ধরন, ওয়াচ বা ফোনের সাথে সম্পর্কিত অ্যাপের জন্য, res/values/wear.xml ফাইলে ক্ষমতার নামের জন্য একটি অনন্য স্ট্রিং নির্দিষ্ট করুন।

যেমন, আপনার মোবাইল মডিউলে, wear.xml ফাইলটিতে নিম্নলিখিত বিষয়গুলি থাকতে পারে:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_phone_app</item>
    </string-array>
</resources>

আপনার Wear OS মডিউলে, wear.xml ফাইলে নিম্নলিখিতগুলির মতো ক্ষমতার নামের জন্য একটি আলাদা ভ্যালু থাকে:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@array/android_wear_capabilities">
    <string-array name="android_wear_capabilities">
        <item>verify_remote_example_wear_app</item>
    </string-array>
</resources>

আরও তথ্যের জন্য, বিজ্ঞাপন দেওয়ার ক্ষমতা দেখুন।

ওয়াচ থেকে অ্যাপ শনাক্ত করা ও URL খোলা

ব্যবহারকারীর কম্প্যানিয়ন ফোনে আপনার ফোন অ্যাপ আছে কিনা তা আপনার ওয়াচ অ্যাপ শনাক্ত করতে পারে। এইসব ধাপ অনুসরণ করুন:

  1. পেয়ার করা ফোনে আপনার ফোন অ্যাপ ইনস্টল করা আছে কিনা তা চেক করতে CapabilityClient ব্যবহার করুন। আরও তথ্যের জন্য, GitHub-এ Datalayer হেল্পার স্যাম্পেল দেখুন।
  2. ফোনে ফোন অ্যাপ ইনস্টল করা না থাকলে, PhoneDeviceType.getPhoneDeviceType() পদ্ধতি ব্যবহার করে ফোনের ধরন চেক করুন। বিবরণের জন্য নিম্নলিখিত বিভাগ দেখুন।
  3. যদি PhoneDeviceType.DEVICE_TYPE_ANDROID ফেরত আসে, তাহলে বুঝতে হবে ফোনটি Android ফোন। Wear OS ডিভাইসে RemoteActivityHelper.startRemoteActivity() কল করে ফোনে Play Store খুলুন। আপনার ফোন অ্যাপের জন্য মার্কেট URI ব্যবহার করুন যা আপনার Wear অ্যাপের URI থেকে আলাদা হতে পারে। যেমন, এই ধরনের মার্কেট URI ব্যবহার করুন: market://details?id=com.example.android.wearable.wear.finddevices.
  4. যদি PhoneDeviceType.DEVICE_TYPE_IOS রিটার্ন করা হয়, তাহলে ফোনটি একটি iOS ফোন যাতে Play Store উপলভ্য নেই। Wear OS ডিভাইসে RemoteActivityHelper.startRemoteActivity() কল করে iPhone-এ App Store খুলুন। আপনি নিজের অ্যাপের iTunes URL উল্লেখ করতে পারেন, যেমন https://itunes.apple.com/us/app/yourappname।

    Wear OS থেকে, আপনার ফোন অ্যাপ iOS ডিভাইসে ইনস্টল করা আছে কিনা তা আপনি প্রোগ্রামমেটিক উপায়ে নির্ধারণ করতে পারবেন না। পেশাদার পদ্ধতি হিসেবে, ব্যবহারকারীকে App Store ম্যানুয়ালি খোলার জন্য একটি মেকানিজম প্রদান করুন।

মনে রাখবেন: আগের বিভাগে বর্ণিত RemoteActivityHelper API ব্যবহার করে নির্দিষ্ট করুন যে ওয়াচ থেকে ফোনে যেকোনও URL খোলা যাবে এবং এর জন্য কোনও ফোন অ্যাপের প্রয়োজন নেই।

পেয়ার করা ফোনের ধরন শনাক্ত করার বিবরণ

এখানে একটি স্নিপেট দেওয়া হল যা getPhoneDeviceType() পদ্ধতি ব্যবহার করে ঘড়িটি কোন ধরনের ফোনের সাথে পেয়ার করা হয়েছে তা চেক করে:

var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)

getPhoneDeviceType() পদ্ধতির মাধ্যমে রিটার্ন করা ভ্যালু নিম্নলিখিতগুলির মধ্যে একটি:

রিটার্ন ভ্যালু বিবরণ
DEVICE_TYPE_ANDROID কম্প্যানিয়ন ফোনটি Android-এর মাধ্যমে পরিচালিত ডিভাইস।
DEVICE_TYPE_IOS সহযোগী ফোনটি একটি iOS ডিভাইস।
DEVICE_TYPE_UNKNOWN কম্প্যানিয়ন ফোনটি একটি অজানা ডিভাইস।
DEVICE_TYPE_ERROR পেয়ার করা ফোনের ধরন নির্ধারণ করতে সমস্যা হয়েছে; পরে আবার চেক করে দেখতে হবে।

Android ফোন থেকে অ্যাপ শনাক্তকরণ শুরু করা

কোনও ব্যবহারকারীর Wear OS ডিভাইসে আপনার ওয়াচ অ্যাপ আছে কিনা তা আপনার Android ফোন শনাক্ত করতে পারে। এইসব ধাপ অনুসরণ করুন:

  1. NodeClient ব্যবহার করে, ব্যবহারকারীর ফোনের সাথে কানেক্ট করা সব ওয়াচ খুঁজে দেখুন। আরও তথ্যের জন্য, GitHub-এ Datalayer হেল্পার স্যাম্পেল দেখুন।
  2. CapabilityClient ব্যবহার করে, চেক করুন যে ব্যবহারকারীর কোন ওয়াচে আপনার অ্যাপ ইনস্টল করা আছে।
  3. ব্যবহারকারীর সবকটি ওয়াচে আপনার অ্যাপ ইনস্টল করা না থাকলে, ব্যবহারকারীকে RemoteActivityHelper.startRemoteActivity() পদ্ধতি ব্যবহার করে ফোন থেকে বাকি Wear OS ডিভাইসে Play Store খুলতে দিন। Wear OS অ্যাপের জন্য মার্কেট URI ব্যবহার করুন, যা আপনার ফোন অ্যাপের URI-এর থেকে আলাদা হতে পারে। যেমন, market URI ব্যবহার করুন যেমন: market://details?id=com.example.android.wearable.wear.finddevices.

iPhone-এর সাথে পেয়ার করা ওয়াচের লোকেশন ডেটা

iPhone-এর সাথে পেয়ার করা ওয়াচের ক্ষেত্রে, ওয়াচে লোকেশন ডেটা পেতে ফিউজড লোকেশন প্রোভাইডার (FLP) ব্যবহার করুন। আরও তথ্যের জন্য, Wear OS-এ লোকেশন শনাক্ত করা দেখুন।

কম্প্যানিয়ন ফোন উপলভ্য থাকলে, FLP লোকেশন ডেটার জন্য কম্প্যানিয়ন ফোন ব্যবহার করে।

শুধুমাত্র প্রয়োজনীয় ডেটা সংগ্রহ করা

সাধারণত, ইন্টারনেট থেকে ডেটা সংগ্রহ করার সময়, শুধুমাত্র প্রয়োজনীয় ডেটা সংগ্রহ করুন। অন্যথায়, আপনি অপ্রয়োজনীয় লেটেন্সি, মেমরি ব্যবহার এবং ব্যাটারি ব্যবহার করতে পারেন।

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

  • শুধুমাত্র ফোন অ্যাপের জন্য প্রয়োজনীয় অতিরিক্ত ডেটার জন্য আপনার নেটওয়ার্ক অনুরোধ ও উত্তর অডিট করুন।
  • ওয়াচে নেটওয়ার্কের মাধ্যমে পাঠানোর আগে বড় ছবি ছোট করে নিন।

যেসব ক্ষেত্রে হাই-ব্যান্ডউইথ নেটওয়ার্কের প্রয়োজন, সেইসব ক্ষেত্রে হাই-ব্যান্ডউইথ নেটওয়ার্ক অ্যাক্সেস দেখুন।

অতিরিক্ত কোড স্যাম্পেল

ডেটা লেয়ার হেল্পার স্যাম্পেল এই পৃষ্ঠায় কভার করা API-এর ব্যবহার আরও ভালভাবে ডেমোনস্ট্রেট করে।