برنامه‌های Wear OS خوداتکا دربرابر غیرخوداتکا

توصیه می‌کنیم برنامه‌های Wear OS مستقل از تلفن کار کنند تا کاربران بتوانند بدون دسترسی به تلفن Android یا iOS، وظایف را در ساعت تکمیل کنند. اگر برنامه ساعت شما به تعامل با تلفن نیاز دارد، باید برنامه Wear OS خود را به‌عنوان غیرمستقل علامت‌گذاری کنید و اقداماتی انجام دهید تا مطمئن شوید کاربر برنامه تلفن را دردسترس دارد.

برنامه‌ریزی برنامه

می‌توانید از Android App Bundle برای تولید خودکار Android Package Kit (APK) بهینه‌سازی‌شده برای پیکربندی دستگاه هر کاربر تحت فهرستگان برنامه یکسان استفاده کنید. این کار به کاربران امکان می‌دهد فقط کد و منابعی را که برای اجرای برنامه‌تان نیاز دارند بارگیری کنند.

برای کسب اطلاعات درباره راه‌اندازی برنامه برای توزیع ازطریق «فروشگاه Google Play»، به بسته‌بندی و توزیع برنامه‌های Wear OS و راهنمای شروع کار با دسته‌های برنامه Android مراجعه کنید.

برای برنامه‌های جدید، سطح میانای برنامه‌سازی کاربردی هدف باید ۳۴ یا بالاتر باشد. برای اطلاعات بیشتر، به ملزومات سطح میانای برنامه‌سازی کاربردی هدف Google Play را برآورده کنید مراجعه کنید. هدف‌یابی جدیدترین سطح API دردسترس کمک می‌کند مطمئن شوید که برنامه‌تان در نسخه‌های فعلی پلاتفرم به‌خوبی کار می‌کند.

برای اطلاعات درباره درخواست‌های شبکه و دسترسی به شبکه با پهنای باند بالا، دسترسی به شبکه و همگام‌سازی در Wear OS را ببینید.

تعریف برنامه به‌عنوان برنامه Wear OS

باید برچسب <uses-feature> را در فایل مانیفست Android برنامه‌تان تعریف کنید. برای نشان دادن اینکه برنامه ساعت است، ورودی‌ای مانند ورودی زیر اضافه کنید:

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

شناسایی برنامه به‌عنوان خوداتکا یا غیرخوداتکا

برنامه ساعت یا مستقل یا غیرمستقل درنظر گرفته می‌شود:

  • مستقل: برنامه‌ای کاملاً مستقل که برای ویژگی‌های اصلی به برنامه تلفن نیاز ندارد. اگرچه پیام‌واره‌های «باز کردن در تلفن» قابل‌قبول است، برنامه باید روش‌های جایگزینی برای کاربران فراهم کند تا عملکرد برنامه را بدون نیاز به تلفن متصل تکمیل کنند، مثلاً پیوند کوتاه یا رمزینه پاسخ‌سریع.
  • غیرمستقل: برنامه وابسته‌ای که برای ویژگی‌های اصلی به برنامه تلفن یا دستگاه دیگری نیاز دارد. این گزینه برای برنامه‌هایی که نمی‌توانند به‌راحتی روش جایگزینی—مثل رمزینه پاسخ‌سریع یا پیوند کوتاه—برای تکمیل عملکرد اصلی برنامه، مثل اصالت‌سنجی، ارائه دهند بهترین گزینه است.

توجه: حتی برای برنامه‌های غیرمستقل، کاربران می‌توانند برنامه Wear OS را قبل‌از برنامه تلفن همراه نصب کنند. بنابراین اگر برنامه Wear OS شما تشخیص داد که دستگاه دستی نزدیک فاقد برنامه همراه لازم است، از کاربر بخواهید برنامه همراه را نصب کند.

‫Google درطول ارائه برنامه، صحت وضعیت مستقل برنامه را تأیید می‌کند. این مقدار بر نمایان بودن برنامه‌ها در «فروشگاه Play» در دستگاه‌های بدون اتصال، مثل دستگاه‌های Wear OS که با دستگاه‌های دستی جفت نشده‌اند، تأثیر می‌گذارد. برنامه‌های غیرمستقل—و همچنین برنامه‌هایی که توسعه‌دهندگان به‌اشتباه آن‌ها را به‌عنوان «مستقل» تعیین می‌کنند—برای کاربران این دستگاه‌های بدون اتصال دردسترس نیستند.

در برنامه Wear OS خود، مقدار عنصر meta-data را com.google.android.wearable.standalone در فایل مانیفست Android تنظیم کنید تا اعلام کنید که برنامه شما مستقل است یا غیرمستقل.

اگر برنامه ساعتتان کاملاً مستقل و خوداتکا است، با تنظیم مقدار com.google.android.wearable.standalone روی true، این موضوع را به فروشگاه Google Play اعلام کنید:

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

اگر برنامه ساعتتان غیرمستقل است و برای ویژگی‌های اصلی به برنامه دیگری وابسته است، مقدار com.google.android.wearable.standalone را روی false تنظیم کنید. این نشان می‌دهد که برنامه ساعت به دستگاه دیگری نیاز دارد، اما بر تبلیغ برنامه شما در «فروشگاه Google Play» تأثیر نمی‌گذارد.

توجه: حتی اگر مقدار com.google.android.wearable.standalone false باشد، برنامه ساعت می‌تواند قبل‌از نصب برنامه تلفن نصب شود. بنابراین، اگر برنامه ساعت شما تشخیص دهد که تلفن همراه برنامه تلفن لازم را ندارد، همان‌طور که در این صفحه توضیح داده شده است، از کاربر بخواهید برنامه تلفن را نصب کند.

فضای ذخیره‌سازی داده و کد مشترک

کد می‌تواند بین برنامه Wear OS و برنامه تلفن هم‌رسانی شود. برای مثال، کد مشترک برای شبکه‌سازی می‌تواند در کتابخانه هم‌رسانی‌شده باشد.

به‌صورت اختیاری، کد مربوط به ضریب شکل می‌تواند در واحد جداگانه‌ای باشد.

می‌توانید از «میاناهای برنامه‌سازی کاربردی فضای ذخیره‌سازی» استاندارد Android برای ذخیره کردن داده‌ها به‌صورت محلی استفاده کنید، همان‌طور که در تلفن استفاده می‌کنید. می‌توانید از DataStore برای ذخیره جفت‌های کلید-مقدار و اشیای تایپ‌شده استفاده کنید، یا می‌توانید از کتابخانه ماندگاری Room استفاده کنید.

برنامه‌تان را در دستگاهی دیگر شناسایی کنید

برنامه ساعت و برنامه تلفن مربوط به آن می‌توانند تشخیص دهند که برنامه دیگر دردسترس است یا نه.

برنامه‌های تلفن و ساعت شما می‌توانند از CapabilityClient برای تبلیغ حضورشان در دستگاه جفت‌شده استفاده کنند. این کار را می‌توانند به‌صورت ثابت یا پویا انجام دهند.

وقتی برنامه‌ای در گره‌ای در شبکه Wear OS کاربر، مثلاً در تلفن، ساعت جفت‌شده، یا در فضای ابری باشد، CapabilityClient به برنامه‌های دیگر امکان می‌دهد آن را تشخیص دهند. برای اطلاعات بیشتر، به قابلیت‌های تبلیغ مراجعه کنید.

اگر یکی از برنامه‌هایتان نمی‌تواند برنامه دیگر را شناسایی کند، می‌توانید از کاربر بخواهید فهرستگان «فروشگاه Play» را در دستگاه تحت‌تأثیر قرارگرفته باز کند. این راهکاری برای برنامه‌های ساعت است که برای عملکرد درست به حضور برنامه تلفن همراه نیاز دارند.

باید بررسی کنید که آیا «فروشگاه Play» در دستگاه دردسترس است یا نه، زیرا همه تلفن‌ها—مثل iPhone—از «فروشگاه Play» پشتیبانی نمی‌کنند.

بخش‌های زیر روال‌های مطلوب را برای دو سناریو شرح می‌دهند:

  • برنامه ساعت مستقل شما به برنامه تلفن نیاز دارد.
  • برنامه تلفن شما به برنامه ساعت مستقل نیاز دارد.

همچنین می‌توانید نمونه دستیارهای لایه داده را بررسی کنید که نحوه استفاده از کتابخانه‌های دستیارهای لایه داده را نشان می‌دهد، بخشی از Horologist. این دستیارها به شما امکان می‌دهند اتصال بین دستگاه دستی و دستگاه 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>

برای اطلاعات بیشتر، قابلیت‌های تبلیغ را ببینید.

تشخیص برنامه و باز کردن نشانی وب از ساعت

برنامه ساعت شما می‌تواند تشخیص دهد که تلفن همراه کاربر برنامه تلفن شما را دارد یا نه. این مراحل را دنبال کنید:

  1. از CapabilityClient برای بررسی اینکه برنامه تلفن در تلفن جفت‌شده نصب شده است یا نه استفاده کنید. برای اطلاعات بیشتر، نمونه دستیارهای لایه داده را در GitHub ببینید.
  2. اگر برنامه تلفن در تلفن نصب نشده است، از روش PhoneDeviceType.getPhoneDeviceType() برای بررسی نوع تلفن استفاده کنید. برای جزئیات بیشتر، بخش زیر را ببینید.
  3. اگر PhoneDeviceType.DEVICE_TYPE_ANDROID برگردانده شود، تلفن Android است. در دستگاه Wear OS، RemoteActivityHelper.startRemoteActivity() را فراخوانی کنید تا «فروشگاه Play» در تلفن باز شود. از نشانی وب بازار برای برنامه تلفنتان استفاده کنید که ممکن است با نشانی وب برنامه Wear شما متفاوت باشد. برای مثال، از نشانی وب بازار مثل market://details?id=com.example.android.wearable.wear.finddevices استفاده کنید.
  4. اگر PhoneDeviceType.DEVICE_TYPE_IOS برگردانده شود، تلفن iOS است و «فروشگاه Play» در آن دردسترس نیست. با شماره‌گیری RemoteActivityHelper.startRemoteActivity() در دستگاه Wear OS، ‫App Store را در iPhone باز کنید. می‌توانید نشانی وب iTunes برنامه‌تان را مشخص کنید، مثلاً https://itunes.apple.com/us/app/yourappname.

    از Wear OS، نمی‌توانید به‌صورت برنامه‌ریزی‌شده تعیین کنید که آیا برنامه تلفن شما در دستگاه iOS نصب شده است یا نه. به‌عنوان روال مطلوب، سازوکاری برای کاربر فراهم کنید تا بتواند باز کردن App Store را به‌صورت دستی راه‌اندازی کند.

توجه: از RemoteActivityHelper API که در بخش قبلی توضیح داده شده است برای مشخص کردن اینکه هر نشانی وب باید در تلفن ازطریق ساعت باز شود و اینکه هیچ برنامه تلفنی لازم نیست استفاده کنید.

جزئیات مربوط به تشخیص نوع تلفن جفت‌شده

در اینجا تکه‌کدی وجود دارد که از روش getPhoneDeviceType() برای بررسی نوع تلفنی که ساعت با آن جفت شده است استفاده می‌کند:

var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)

مقدار برگشتی از روش getPhoneDeviceType() یکی از موارد زیر است:

برگرداندن مقدار شرح
DEVICE_TYPE_ANDROID تلفن همراه دستگاهی با سیستم‌عامل Android باشد.
DEVICE_TYPE_IOS تلفن همراه دستگاه iOS است.
DEVICE_TYPE_UNKNOWN تلفن همراه دستگاهی ناشناس است.
DEVICE_TYPE_ERROR خطایی در تعیین نوع تلفن جفت‌شده رخ داد؛ باید بعداً بررسی دیگری انجام شود.

تشخیص برنامه از تلفن Android شروع می‌شود

تلفن Android شما می‌تواند تشخیص دهد که آیا دستگاه‌های Wear OS کاربر برنامه ساعت شما را دارند یا نه. این مراحل را دنبال کنید:

  1. بااستفاده از NodeClient، همه ساعت‌های متصل به تلفن کاربر را پیدا کنید. برای اطلاعات بیشتر، نمونه دستیارهای لایه داده را در GitHub ببینید.
  2. بااستفاده از CapabilityClient، بررسی کنید برنامه شما در کدام‌یک از ساعت‌های کاربر نصب شده است.
  3. اگر برنامه شما در همه ساعت‌های کاربر نصب نشده است، به کاربر اجازه دهید بااستفاده از روش RemoteActivityHelper.startRemoteActivity()، «فروشگاه Play» را در دستگاه‌های Wear OS باقی‌مانده از تلفن باز کند. از نشانی وب بازار برای برنامه Wear OS استفاده کنید که ممکن است با نشانی وب برنامه تلفن شما متفاوت باشد. برای مثال، از نشانی وب بازار استفاده کنید مثل: market://details?id=com.example.android.wearable.wear.finddevices.

داده‌های مکان برای ساعت‌های جفت‌شده با iPhone

برای ساعت‌های جفت‌شده با iPhone، از ارائه‌دهنده مکان ترکیبی (FLP) برای دریافت داده‌های مکان در ساعت استفاده کنید. برای کسب اطلاعات بیشتر، تشخیص مکان در Wear OS را ببینید.

اگر تلفن همراه دردسترس باشد، FLP از تلفن همراه برای داده‌های مکان استفاده می‌کند.

فقط داده‌های ضروری را دریافت کنید

به‌طورکلی، هنگام دریافت داده از اینترنت، فقط داده‌های ضروری را دریافت کنید. درغیراین‌صورت، ممکن است تأخیر غیرضروری، استفاده از حافظه، و استفاده از باتری را افزایش دهید.

وقتی ساعت ازطریق اتصال «بلوتوث کم‌مصرف» متصل باشد، برنامه شما ممکن است فقط به پهنای باند ۴ کیلوبایت در ثانیه دسترسی داشته باشد، که این مقدار به ساعت بستگی دارد. بنابراین، مراحل زیر توصیه می‌شود:

  • درخواست‌ها و پاسخ‌های شبکه را برای داده‌های اضافی که فقط برای برنامه تلفن لازم است ممیزی کنید.
  • تصاویر بزرگ را قبل‌از ارسال آن‌ها ازطریق شبکه به ساعت کوچک کنید.

برای مواردی که به شبکه پهنای باند بالا نیاز است، به دسترسی به شبکه پهنای باند بالا مراجعه کنید.

نمونه‌های کد اضافی

نمونه دستیارهای لایه داده استفاده از میاناهای برنامه‌سازی کاربردی پوشش‌داده‌شده در این صفحه را بیشتر نشان می‌دهد.