برنامه‌های Wear OS مستقل در مقابل غیرمستقل

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

برنامه خود را برنامه ریزی کنید

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

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

برای برنامه‌های جدید، سطح API هدف باید 30 یا بالاتر باشد. برای اطلاعات بیشتر، به بخش «الزامات سطح API هدف Google Play را ملاقات کنید» مراجعه کنید. targetSdkVersion را روی سطح API 30 (Wear OS 3) تنظیم کنید تا مطمئن شوید که برنامه شما در آخرین نسخه پلتفرم به خوبی کار می‌کند.

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

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

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

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

تشخیص مستقل یا غیرمستقل بودن یک برنامه

یک برنامه ساعت یا مستقل است یا غیر مستقل:

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

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

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

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

اگر برنامه ساعت شما یک برنامه کاملاً مستقل و جداگانه است، با تنظیم مقدار 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 و یک برنامه تلفن به اشتراک گذاشته شود. برای مثال، کد مشترک برای شبکه می‌تواند در یک کتابخانه مشترک باشد.

به صورت اختیاری، کدی که مختص یک فاکتور فرم است می‌تواند در یک ماژول جداگانه باشد.

شما می‌توانید از APIهای ذخیره‌سازی استاندارد اندروید برای ذخیره داده‌ها به صورت محلی، مانند آنچه در تلفن انجام می‌دهید، استفاده کنید. به عنوان مثال، می‌توانید از APIهای SharedPreferences یا کتابخانه پایداری Room استفاده کنید.

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

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

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

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

اگر یکی از برنامه‌های شما نمی‌تواند دیگری را شناسایی کند، می‌توانید از کاربر بخواهید که فهرست فروشگاه Play را در دستگاه آسیب‌دیده باز کند. این یک راه حل برای برنامه‌های ساعت است که برای عملکرد صحیح به حضور برنامه تلفن همراه خود نیاز دارند.

شما باید بررسی کنید که آیا فروشگاه Play در دستگاه موجود است یا خیر، زیرا همه تلفن‌ها - مانند آیفون‌ها - از فروشگاه Play پشتیبانی نمی‌کنند.

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

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

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

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

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

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

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

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

نکته : از API RemoteActivityHelper که قبلاً توضیح داده شد، برای تعیین اینکه هر URL از طریق ساعت روی گوشی باز شود و نیازی به برنامه گوشی نباشد، استفاده کنید.

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

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

var phoneDeviceType: Int = PhoneTypeHelper.getPhoneDeviceType(this)

مقداری که توسط متد getPhoneDeviceType() برگردانده می‌شود، یکی از موارد زیر است:

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

تشخیص برنامه از طریق تلفن اندروید

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

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

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

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

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

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

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

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

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

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

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

نمونه‌ی کمکی‌های Datalayer، کاربرد APIهای مطرح‌شده در این صفحه را بیشتر نشان می‌دهد.