Thread Network SDK برای اندروید

کیت توسعه نرم‌افزاری شبکه Thread عملکردی مشابه یک جاکلیدی دیجیتال ارائه می‌دهد و به برنامه‌های اندروید شما اجازه می‌دهد تا اعتبارنامه‌های شبکه Thread را با سرویس‌های Google Play به اشتراک بگذارند. این به برنامه‌های شما اجازه می‌دهد تا هر دستگاه Thread را از هر اکوسیستم خانه هوشمندی، بدون افشای مستقیم اعتبارنامه‌ها و داده‌های کاربر، راه‌اندازی کنند.

تنها با چند فراخوانی API، می‌توانید:

  1. درخواست اعتبارنامه‌های شبکه Thread مورد نظر از سرویس‌های Google Play.
  2. Thread Border Router (TBR) جدید را راه‌اندازی کنید و اعتبارنامه‌های شبکه ترد خود را به سرویس‌های گوگل پلی اضافه کنید.
  3. اگر از قبل TBR های درون فیلدی دارید، می‌توانید بررسی کنید که آیا TBR های شما در شبکه ترجیحی قرار دارند یا خیر و در صورت لزوم آنها را منتقل کنید.

چندین مسیر برای کاربر و توسعه‌دهنده وجود دارد که باید در نظر گرفته شوند. ما در این راهنما اکثر آنها را به همراه سایر ویژگی‌های کلیدی و نحوه‌ی استفاده‌ی پیشنهادی پوشش خواهیم داد.

اصطلاحات کلیدی و مفاهیم API

قبل از شروع، درک اصطلاحات زیر مفید است:

  • اعتبارنامه‌های شبکه‌ی ترد: مجموعه‌ای دودویی از TLVهای ترد که نام شبکه‌ی ترد، کلید شبکه و سایر ویژگی‌هایی را که یک دستگاه ترد برای پیوستن به یک شبکه‌ی ترد معین نیاز دارد، کدگذاری می‌کند.

  • اعتبارنامه‌های شبکه‌ی ترد ترجیحی: اعتبارنامه‌های شبکه‌ی ترد که به صورت خودکار انتخاب شده‌اند و می‌توانند با استفاده از رابط برنامه‌نویسی کاربردی getPreferredCredentials با برنامه‌های فروشندگان مختلف به اشتراک گذاشته شوند.

  • شناسه عامل مرزی: یک شناسه ۱۶ بایتی منحصر به فرد جهانی برای یک دستگاه TBR . این شناسه توسط فروشندگان border router ایجاد و مدیریت می‌شود.

  • برنامه راه‌اندازی TBR : این برنامه اندروید شماست که دستگاه‌های جدید TBR را راه‌اندازی می‌کند و اعتبارنامه‌های شبکه Thread را به سرویس‌های Google Play اضافه می‌کند. برنامه شما مالک معتبر اعتبارنامه‌های اضافه شده است و به آنها دسترسی دارد.

بسیاری از APIهای شبکه Thread، وظیفه‌ای را برمی‌گردانند که به صورت غیرهمزمان تکمیل می‌شود. می‌توانید از addOnSuccessListener و addOnFailureListener برای ثبت فراخوانی‌ها جهت دریافت نتیجه استفاده کنید. برای کسب اطلاعات بیشتر، به مستندات Task مراجعه کنید.

مالکیت و نگهداری اعتبارنامه‌ها

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

به عنوان مالک برنامه، توصیه می‌شود هنگام به‌روزرسانی شبکه TBR ، اعتبارنامه‌های ذخیره شده در سرویس‌های Google Play را به‌روز نگه دارید. این به معنای اضافه کردن اعتبارنامه‌ها در صورت نیاز، به‌روزرسانی اعتبارنامه‌ها هنگام تغییر اعتبارنامه‌های شبکه Thread border router و حذف اعتبارنامه‌ها هنگام حذف TBR یا تنظیم مجدد کارخانه است.

کشف مامور مرزی

اعتبارنامه‌ها باید با شناسه عامل مرزی ذخیره شوند. باید مطمئن شوید که برنامه راه‌اندازی TBR شما قادر به تعیین شناسه‌های عامل مرزی TBR های شما است.

TBR ها باید از mDNS برای انتشار اطلاعات شبکه Thread، از جمله نام شبکه، شناسه توسعه‌یافته Pan و شناسه عامل مرزی، استفاده کنند. مقادیر txt مربوط به این ویژگی‌ها به ترتیب nn ، xp و id هستند.

برای شبکه‌هایی که دارای Google Thread Border Router (gTBR) هستند، سرویس‌های گوگل پلی به‌طور خودکار اعتبارنامه‌های شبکه گوگل ترد را برای استفاده دریافت می‌کنند.

SDK را در برنامه اندروید خود ادغام کنید

برای شروع، مراحل زیر را انجام دهید:

  1. دستورالعمل‌های ارائه شده در بخش «راه‌اندازی سرویس‌های Google Play» را دنبال کنید.

  2. وابستگی سرویس‌های گوگل پلی را به فایل build.gradle خود اضافه کنید:

    implementation 'com.google.android.gms:play-services-threadnetwork:16.2.1'
    
  3. اختیاری: یک کلاس داده BorderAgent برای ذخیره اطلاعات TBR تعریف کنید. ما در سراسر این راهنما از این داده‌ها استفاده خواهیم کرد:

    data class BorderAgentInfo(
      // Network Name max 16 len
      val networkName: String = "",
      val extPanId: ByteArray = ByteArray(16),
      val borderAgentId: ByteArray = ByteArray(16),
      ...
    )
    

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

تنظیمات جدید مسیریاب حاشیه نخ

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

فراخوانی getPreferredCredentials یک Activity را اجرا می‌کند و از کاربران می‌خواهد که درخواست شبکه را مجاز کنند. اگر اعتبارنامه‌های شبکه در زنجیره کلید دیجیتال Thread SDK ذخیره شده باشند، اعتبارنامه‌ها به برنامه شما بازگردانده می‌شوند.

درخواست اعتبارنامه

برای درخواست اطلاعات احراز هویت ترجیحی از کاربر:

  1. یک ActivityLauncher تعریف کنید:

    private lateinit var preferredCredentialsLauncher: ActivityResultLauncher<IntentSenderRequest>
    
  2. مدیریت نتیجه Activity که به صورت ThreadNetworkCredentials برگردانده می‌شود:

    preferredCredentialsLauncher =
     registerForActivityResult(
       StartIntentSenderForResult()
     ) { result: ActivityResult ->
       if (result.resultCode == RESULT_OK) {
         val threadNetworkCredentials = ThreadNetworkCredentials.