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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

کد را می توان بین یک برنامه Wear OS و یک برنامه تلفن به اشتراک گذاشت. به عنوان مثال، کدهای رایج برای شبکه می تواند در یک کتابخانه مشترک باشد.

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

می‌توانید از APIهای ذخیره‌سازی استاندارد Android برای ذخیره داده‌ها به صورت محلی، همانطور که در تلفن استفاده می‌کنید، استفاده کنید. به عنوان مثال، می توانید از API های SharedPreferences یا کتابخانه ماندگاری اتاق استفاده کنید.

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

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

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

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

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

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

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

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

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

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

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

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

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

کاتلین

var phoneDeviceType: Int = PhoneDeviceType.getPhoneDeviceType(context)

جاوا

int phoneDeviceType = PhoneDeviceType.getPhoneDeviceType(context);

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

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

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

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

  1. با استفاده از NodeClient ، تمام ساعت های متصل به تلفن کاربر را پیدا کنید. برای اطلاعات بیشتر، نمونه کمکی Datalayer را در 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 Location Provider (FLP) برای دریافت اطلاعات موقعیت مکانی روی ساعت استفاده کنید. برای اطلاعات بیشتر، به تشخیص مکان در Wear OS مراجعه کنید.

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

فقط داده های لازم را بدست آورید

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

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

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

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

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

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