SafetyNet Verify Apps API

SafetyNet Verify Apps API، کتابخانه‌ای که توسط سرویس‌های Google Play پشتیبانی می‌شود، به برنامه شما اجازه می‌دهد تا به صورت برنامه‌نویسی با ویژگی Verify Apps در دستگاه تعامل داشته باشد و از دستگاه در برابر برنامه‌های بالقوه مضر محافظت کند.

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

به عنوان بخشی از تعهد مستمر خود برای ایمن کردن اکوسیستم اندروید تا حد امکان، Google بر رفتار برنامه‌های اندروید نظارت و نمایه می‌کند. اگر ویژگی تأیید برنامه‌ها یک برنامه بالقوه خطرناک را شناسایی کند، به همه کاربرانی که برنامه را نصب کرده‌اند اطلاع داده می‌شود و تشویق می‌شود که سریعاً برنامه را حذف نصب کنند. این فرآیند از امنیت و حریم خصوصی این کاربران محافظت می کند.

SafetyNet Verify Apps API به شما امکان می دهد از این ویژگی برای محافظت از داده های برنامه خود استفاده کنید. با استفاده از این API، می‌توانید تعیین کنید که آیا دستگاه کاربر توسط ویژگی تأیید برنامه‌ها محافظت می‌شود یا خیر، کاربرانی را که قبلاً از این ویژگی استفاده نمی‌کنند تشویق کنید تا در حفاظت از آن شرکت کنند، و هر برنامه بالقوه مضر شناخته‌شده‌ای را که روی دستگاه نصب شده است شناسایی کنید. .

شرایط اضافی خدمات

با دسترسی یا استفاده از APIهای SafetyNet، با شرایط خدمات Google APIs و شرایط خدمات Verify Apps API زیر موافقت می‌کنید. لطفاً قبل از دسترسی به APIها، همه شرایط و خط مشی های قابل اجرا را بخوانید و درک کنید.

شرایط سرویس Apps API را تأیید کنید

تجزیه و تحلیل برنامه‌هایی که برنامه‌های مضر بالقوه را شناسایی می‌کنند ممکن است هم مثبت کاذب و هم منفی کاذب به دست آورند. نتایج (یا عدم وجود آنها) از این مجموعه API به بهترین نحو ارائه شده است. شما تأیید و درک می کنید که نتایج ارائه شده توسط این مجموعه API SafetyNet تضمین نمی شود که همیشه دقیق باشند.

وابستگی SafetyNet API را اضافه کنید

قبل از استفاده از Verify Apps API، SafetyNet API را به پروژه خود اضافه کنید. اگر از Android Studio استفاده می کنید، این وابستگی را به فایل Gradle در سطح برنامه خود اضافه کنید. برای اطلاعات بیشتر، تنظیمات SafetyNet API را ببینید.

تأیید برنامه را فعال کنید

SafetyNet Verify Apps API دو روش را برای فعال کردن ویژگی Verify Apps ارائه می‌کند. شما می توانید تعیین کنید که آیا تأیید برنامه با استفاده از isVerifyAppsEnabled() فعال است یا خیر، و می توانید با استفاده از enableVerifyApps() درخواست فعال سازی تأیید برنامه را بدهید.

تفاوت بین این دو روش در این است که در حالی که isVerifyAppsEnabled() وضعیت فعلی ویژگی Verify Apps را گزارش می کند، enableVerifyApps() به صراحت از کاربر برای استفاده از این ویژگی رضایت می خواهد. اگر می‌خواهید برنامه شما فقط از وضعیت ویژگی آگاه باشد تا تصمیمی مبتنی بر امنیت بگیرد، برنامه شما باید isVerifyAppsEnabled() فراخوانی کند. با این حال، اگر می‌خواهید مطمئن شوید که برنامه شما می‌تواند برنامه‌های نصب شده بالقوه مضر را فهرست کند، باید به‌جای آن enableVerifyApps() فراخوانی کنید.

تعیین کنید که آیا تأیید برنامه فعال است یا خیر

روش ناهمزمان isVerifyAppsEnabled() به برنامه شما اجازه می دهد تعیین کند که آیا کاربر در ویژگی Verify Apps ثبت نام کرده است یا خیر. این روش یک شی VerifyAppsUserResponse را برمی گرداند که حاوی اطلاعاتی در مورد تمام اقداماتی است که کاربر در رابطه با ویژگی Verify Apps انجام داده است، از جمله فعال کردن آن.

قطعه کد زیر نحوه ایجاد پاسخ تماس مرتبط با این روش را نشان می دهد:

کاتلین

SafetyNet.getClient(this)
        .isVerifyAppsEnabled
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                if (task.result.isVerifyAppsEnabled) {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is enabled.")
                } else {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is disabled.")
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.")
            }
        }

جاوا

SafetyNet.getClient(this)
    .isVerifyAppsEnabled()
    .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() {
        @Override
        public void onComplete(Task<VerifyAppsUserResponse> task) {
            if (task.isSuccessful()) {
                VerifyAppsUserResponse result = task.getResult();
                if (result.isVerifyAppsEnabled()) {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is enabled.");
                } else {
                    Log.d("MY_APP_TAG", "The Verify Apps feature is disabled.");
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.");
            }
        }
    });

درخواست فعال کردن تأیید برنامه

متد enableVerifyApps() ناهمزمان به برنامه شما اجازه می‌دهد تا یک گفتگو را فراخوانی کند و از کاربر بخواهد ویژگی Verify Apps را فعال کند. این روش یک شی VerifyAppsUserResponse را برمی گرداند، که حاوی اطلاعاتی در مورد تمام اقداماتی است که کاربر در رابطه با ویژگی Verify Apps انجام داده است، از جمله اینکه آیا با فعال کردن آن موافقت کرده است یا خیر.

قطعه کد زیر نحوه ایجاد پاسخ تماس مرتبط با این روش را نشان می دهد:

کاتلین

SafetyNet.getClient(this)
        .enableVerifyApps()
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                if (task.result.isVerifyAppsEnabled) {
                    Log.d("MY_APP_TAG", "The user gave consent to enable the Verify Apps feature.")
                } else {
                    Log.d(
                            "MY_APP_TAG",
                            "The user didn't give consent to enable the Verify Apps feature."
                    )
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.")
            }
        }

جاوا

SafetyNet.getClient(this)
    .enableVerifyApps()
    .addOnCompleteListener(new OnCompleteListener<VerifyAppsUserResponse>() {
        @Override
        public void onComplete(Task<VerifyAppsUserResponse> task) {
            if (task.isSuccessful()) {
                VerifyAppsUserResponse result = task.getResult();
                if (result.isVerifyAppsEnabled()) {
                    Log.d("MY_APP_TAG", "The user gave consent " +
                          "to enable the Verify Apps feature.");
                } else {
                    Log.d("MY_APP_TAG", "The user didn't give consent " +
                          "to enable the Verify Apps feature.");
                }
            } else {
                Log.e("MY_APP_TAG", "A general error occurred.");
            }
        }
    });

هنگام استفاده از این روش، برنامه شما ممکن است با یک یا چند شرایط غیرعادی مواجه شود:

  • اگر ویژگی Verify Apps قبلاً فعال باشد، کادر گفتگو ظاهر نمی‌شود و API طوری رفتار می‌کند که انگار کاربر رضایت خود را برای فعال کردن این ویژگی اعلام کرده است.
  • اگر کاربر از دیالوگ دور شود، گفتگو از بین می‌رود و API فرض می‌کند که کاربر برای فعال کردن این ویژگی رضایت نداده است.
  • اگر برنامه شما و یک برنامه دیگر به طور همزمان این روش را فراخوانی کنند، فقط یک گفتگو ظاهر می شود و همه برنامه ها مقادیر بازگشتی یکسانی را از روش دریافت می کنند.

برنامه های نصب شده مضر را فهرست کنید

روش ناهمزمان listHarmfulApps() به شما امکان می دهد لیستی از هر برنامه بالقوه مضر شناخته شده ای را که کاربر بر روی دستگاه خود نصب کرده است به دست آورید. این فهرست شامل دسته‌هایی برای برنامه‌های بالقوه مضر شناسایی‌شده است تا برنامه شما بتواند اقدامات لازم را انجام دهد.

قطعه کد زیر نحوه ایجاد پاسخ تماس مرتبط با این روش را نشان می دهد:

کاتلین

SafetyNet.getClient(this)
        .listHarmfulApps()
        .addOnCompleteListener { task ->
            Log.d(TAG, "Received listHarmfulApps() result")

            if (task.isSuccessful) {
                val result = task.result
                val scanTimeMs = result.lastScanTimeMs

                val appList = result.harmfulAppsList
                if (appList?.isNotEmpty() == true) {
                    Log.e("MY_APP_TAG", "Potentially harmful apps are installed!")

                    for (harmfulApp in appList) {
                        Log.e("MY_APP_TAG", "Information about a harmful app:")
                        Log.e("MY_APP_TAG", "  APK: ${harmfulApp.apkPackageName}")
                        Log.e("MY_APP_TAG", "  SHA-256: ${harmfulApp.apkSha256}")

                        // Categories are defined in VerifyAppsConstants.
                        Log.e("MY_APP_TAG", "  Category: ${harmfulApp.apkCategory}")
                    }
                } else {
                    Log.d("MY_APP_TAG", "There are no known potentially harmful apps installed.")
                }
            } else {
                Log.d(
                        "MY_APP_TAG",
                        "An error occurred. Call isVerifyAppsEnabled() to ensure that the user "
                                + "has consented."
                )
            }
        }

جاوا

SafetyNet.getClient(this)
    .listHarmfulApps()
    .addOnCompleteListener(new OnCompleteListener<HarmfulAppsResponse>() {
        @Override
        public void onComplete(Task<HarmfulAppsResponse> task) {
            Log.d(TAG, "Received listHarmfulApps() result");

            if (task.isSuccessful()) {
                HarmfulAppsResponse result = task.getResult();
                long scanTimeMs = result.getLastScanTimeMs();

                List<HarmfulAppsData> appList = result.getHarmfulAppsList();
                if (appList.isEmpty()) {
                    Log.d("MY_APP_TAG", "There are no known " +
                          "potentially harmful apps installed.");
                } else {
                    Log.e("MY_APP_TAG",
                          "Potentially harmful apps are installed!");

                    for (HarmfulAppsData harmfulApp : appList) {
                        Log.e("MY_APP_TAG", "Information about a harmful app:");
                        Log.e("MY_APP_TAG",
                              "  APK: " + harmfulApp.apkPackageName);
                        Log.e("MY_APP_TAG",
                              "  SHA-256: " + harmfulApp.apkSha256);

                        // Categories are defined in VerifyAppsConstants.
                        Log.e("MY_APP_TAG",
                              "  Category: " + harmfulApp.apkCategory);
                    }
                }
            } else {
                Log.d("MY_APP_TAG", "An error occurred. " +
                      "Call isVerifyAppsEnabled() to ensure " +
                      "that the user has consented.");
            }
        }
    });