ارتباط مستقیم از طریق یک شبکه در دستگاه های مستقل

با Wear OS by Google، ساعت می‌تواند مستقیماً بدون دسترسی به تلفن Android یا iOS با شبکه ارتباط برقرار کند. برای اتصال برنامه Wear OS به شبکه از Data Layer API استفاده نکنید. در عوض، دستورالعمل ها و مراحل این راهنما را دنبال کنید.

دسترسی به شبکه

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

وقتی تلفن در دسترس نیست، بسته به سخت افزار ساعت، از شبکه های Wi-Fi و تلفن همراه استفاده می شود. پلت فرم Wear OS انتقال بین شبکه ها را انجام می دهد.

می توانید از پروتکل هایی مانند HTTP، TCP و UDP استفاده کنید. با این حال، APIهای android.webkit ، از جمله کلاس 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 یا رادیو تلفن همراه ساعت ممکن است برای حفظ باتری خاموش باشد. اگر ساعت نمی تواند به شبکه متصل شود، روش onAvailable() نمونه NetworkCallback شما فراخوانی نمی شود.

هنگامی که onAvailable() فراخوانی شد، دستگاه تلاش می کند تا زمانی که NetworkCallback آزاد نشود، به شبکه Wi-Fi متصل باقی بماند. برای حفظ عمر باتری، هنگامی که دیگر نیازی به شبکه Wi-Fi ندارید، همانطور که در مثال زیر نشان داده شده است، تماس را رها کنید.

کاتلین

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

جاوا

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

فعالیت تنظیمات Wi-Fi را راه اندازی کنید

هنگام درخواست یک شبکه Wi-Fi، سیستم سعی می کند به یک شبکه ذخیره شده متصل شود اگر پیکربندی شده باشد و در محدوده باشد. اگر شبکه Wi-Fi ذخیره شده ای در دسترس نباشد، روش پاسخ به تماس onAvailable نمونه NetworkCallback شما فراخوانی نمی شود.

اگر از یک 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 اتصال بلوتوث یا Wi-Fi را به جای اتصال LTE یا اندازه‌گیری مجدد برقرار کند، به تعویق بیندازید.

پیام رسانی ابری

برای ارسال اعلان‌ها، مستقیماً از Firebase Cloud Messaging (FCM) استفاده کنید.

هیچ API برای دسترسی به شبکه یا FCM مخصوص Wear OS نیست. به اسناد موجود در مورد اتصال به شبکه و پیام رسانی ابری مراجعه کنید.

FCM با Doze به خوبی کار می کند و روشی است که برای ارسال اعلان ها به ساعت توصیه می شود.

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

یک پیام FCM در قالب جاوا اسکریپت Object Notation (JSON) است و می‌تواند شامل یک یا هر دو بارگذاری زیر باشد:

  • بار اعلان: هنگامی که یک بار اعلان توسط ساعت دریافت می شود، داده ها مستقیماً در جریان اعلان به کاربر نمایش داده می شود. وقتی کاربر روی اعلان ضربه می زند، برنامه شما راه اندازی می شود.
  • محموله داده: زمانی که محموله دارای مجموعه ای از جفت های کلید یا ارزش سفارشی است. محموله به عنوان داده به برنامه Wear OS شما تحویل داده می شود.

برای اطلاعات بیشتر و نمونه‌هایی از محموله‌ها، درباره پیام‌های FCM را ببینید.

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

از خدمات پس زمینه استفاده کنید

برای اطمینان از اینکه وظایف پس‌زمینه به درستی اجرا می‌شوند، باید Doze و App Standby را در نظر بگیرند.

هنگامی که یک صفحه خاموش می شود یا برای مدت زمان کافی طولانی وارد حالت محیطی می شود، زیر مجموعه ای از Doze می تواند رخ دهد و کارهای پس زمینه را می توان برای دوره های خاصی به تعویق انداخت. بعداً، هنگامی که دستگاه برای مدت طولانی ثابت است، Doze معمولی رخ می دهد. درخواست ها را با WorkManager API برنامه ریزی کنید، که به برنامه شما امکان می دهد برای اجرای کد Doze-safe ثبت نام کند.

برنامه ریزی با محدودیت

می توانید از محدودیت ها برای پیکربندی درخواست ها به گونه ای استفاده کنید که عمر باتری حفظ شود. یک یا چند مورد از محدودیت های زیر را برای درج در درخواست های خود انتخاب کنید:

  • درخواستی را که نیاز به شبکه دارد برنامه ریزی کنید.

    مشخص کنید که NetworkType CONNECTED یا UNMETERED باشد. UNMETERED برای انتقال داده های بزرگ است، در حالی که CONNECTED برای انتقال های کوچک است.

  • هنگام شارژ، درخواست را برنامه ریزی کنید.

  • زمانی که دستگاه بیکار است، درخواست را برنامه ریزی کنید. این برای کارهای پس‌زمینه یا همگام‌سازی با اولویت پایین‌تر مفید است، به‌ویژه زمانی که دستگاه در حال شارژ است.

برای اطلاعات بیشتر، WorkManager's Effect of constraints در راهنمای کار دوره ای را مرور کنید.