API زمان سرویسهای بازی
رابط برنامهنویسی کاربردی زمان (Time API) دسترسی به سیگنالهای زمانی پشتیبانیشده توسط سرویس زمانسنجی دقیق سرویسهای گوگل پلی را فراهم میکند.
این قابلیت در صورتی مفید است که بخواهید زمان UTC صحیح را بدانید، زیرا اگر کاربر ساعت سیستم اندروید را به صورت دستی تنظیم کرده باشد، ممکن است نادرست باشد.
پیش از این، ممکن بود برای دریافت زمان خارجی از یک سرور زمان، نیاز به افزودن یک کلاینت NTP به برنامه خود داشته باشید. API زمان به توسعهدهندگان کمک میکند تا اطلاعات زمانی قابل اعتمادتری را دریافت کنند.
APIهای پلتفرم اندروید، SystemClock.currentNetworkTimeClock() را ارائه میدهند، اما این فقط در سطح API 33 و بالاتر در دسترس است. TrustedTimeClient جایگزینها و اطلاعاتی در مورد محدودههای دقت برای زمان بازگشتی ارائه میدهد.
پیشنیازهای برنامه
- مطمئن شوید که فایل ساخت برنامه شما از مقادیر زیر استفاده میکند:
- حداقل نسخه SDK
21یا بالاتر. - نسخه SDK
21یا بالاتر را کامپایل کنید.
- حداقل نسخه SDK
برنامه خود را پیکربندی کنید
- در فایل
build.gradleدر سطح پروژه، مخزن Maven گوگل و مخزن مرکزی Maven را هم در بخشهایbuildscriptو همallprojectsخود وارد کنید:buildscript { repositories { google() mavenCentral() } } allprojects { repositories { google() mavenCentral() } }
- وابستگیهای مربوط به API زمان را به فایل Gradle سطح برنامه ماژول خود، که معمولاً
app/build.gradle، اضافه کنید:dependencies { implementation 'com.google.android.gms:play-services-time:16.0.1' }
مقداردهی اولیه کلاینت TrustedTime
سادهترین راه برای ادغام، مقداردهی اولیه TrustedTimeClient در اوایل چرخه حیات برنامه شماست. میتوانید این کار را در کلاس onCreate() برنامه خود انجام دهید و کلاینت را در Singleton Application خود نگه دارید. این به شما امکان میدهد از کلاینت در سراسر برنامه خود استفاده کنید.
class MyApplication : Application() { var trustedTimeClient: TrustedTimeClient? = null private set override fun onCreate() { super.onCreate() val initializeTrustedTimeClientTask = TrustedTime.createClient(this) initializeTrustedTimeClientTask.addOnCompleteListener { task -> if (task.isSuccessful) { // Stash the client trustedTimeClient = task.result } else { // Handle error, maybe retry later val exception = initializeTrustedTimeClientTask.exception } } // To use Kotlin Coroutine, you can use the await() method, see // https://developers.google.com/android/guides/tasks#kotlin_coroutine // for more info. } } }
از TrustedTimeClient در هر کجای برنامه خود استفاده کنید
// Retrieve the TrustedTimeClient from your application class val myApp = applicationContext as MyApplication // In this example, System.currentTimeMillis() is used as a fallback if the // client is null (i.e. client creation task failed) or when there is no time // signal available. You may not want to do this if using the system clock is // not suitable for your use case. val currentTimeMillis = myApp.trustedTimeClient?.computeCurrentUnixEpochMillis() ?: System.currentTimeMillis() // trustedTimeClient.computeCurrentInstant() can be used if you'd rather use // Instant instead of long for Unix epoch times and you are able to use the APIs.