کیف پول دسترسی سریع

قابلیت کیف پول دسترسی سریع که از اندروید ۱۱ در دسترس است، به کاربر اجازه می‌دهد تا مستقیماً از منوی پاور به کارت‌های پرداخت و مجوزهای مربوطه دسترسی پیدا کند. موارد استفاده اصلی شامل انتخاب روش پرداخت مناسب قبل از انجام تراکنش در ترمینال NFC و دسترسی سریع به پروازها و سایر مجوزهای مربوط به رویدادهای آینده است.

در اندروید ۱۲ یا بالاتر، ویژگی کیف پول دسترسی سریع (Quick Access Wallet) از طریق نوار ابزار (Shade) همانطور که در شکل ۱ و شکل ۲ نشان داده شده است، در دسترس است.

ویژگی کیف پول دسترسی سریع در سایه
شکل ۱. قابلیت دسترسی سریع به کیف پول (در حالت قفل دستگاه).
ویژگی کیف پول دسترسی سریع در سایه
شکل ۲. قابلیت کیف پول دسترسی سریع (در صورت باز بودن قفل دستگاه).

در اندروید ۱۱، این ویژگی از منوی پاور، همانطور که در شکل ۳ نشان داده شده است، در دسترس است.

قابلیت دسترسی سریع به کیف پول در منوی پاور
شکل ۳. قابلیت دسترسی سریع به کیف پول در منوی پاور.

الزامات

برای استفاده از ویژگی کیف پول دسترسی سریع، دستگاه شما باید NFC داشته باشد. این ویژگی به QuickAccessWalletService برنامه پرداخت NFC پیش‌فرض متصل می‌شود، به این معنی که دستگاه باید از شبیه‌سازی کارت مبتنی بر میزبان NFC (HCE) نیز پشتیبانی کند.

نمای کلی ویژگی‌ها

کیف پول دسترسی سریع دو بخش دارد: رابط کاربری کیف پول دسترسی سریع و ارائه دهنده کارت کیف پول دسترسی سریع.

در اندروید ۱۲ یا بالاتر، رابط کاربری Wallet در System UI اجرا می‌شود و در frameworks/base/packages/SystemUI/src/com/android/systemui/wallet قرار دارد. در اندروید ۱۱، رابط کاربری Wallet که در platform/packages/apps/QuickAccessWallet قرار دارد، باید نصب و در لیست سفید قرار گیرد.

ارائه دهنده کارت Quick Access Wallet برنامه پرداخت NFC پیش‌فرض است. کاربران می‌توانند چندین برنامه پرداخت NFC را به طور همزمان نصب کنند، اما فقط برنامه پرداخت NFC پیش‌فرض می‌تواند کارت‌ها را در منوی پاور نشان دهد. می‌توانید مشخص کنید که کدام برنامه پرداخت NFC در ابتدا به عنوان پیش‌فرض تنظیم شود، اما کاربران می‌توانند برنامه دیگری را در تنظیمات انتخاب کنند. اگر فقط یک برنامه پرداخت NFC نصب شده باشد، به طور خودکار به عنوان پیش‌فرض تبدیل می‌شود (به CardEmulationManager مراجعه کنید).

پیاده‌سازی

برای ارائه کارت به رابط کاربری کیف پول سریع، برنامه‌های پرداخت NFC باید QuickAccessWalletService را پیاده‌سازی کنند. برنامه‌های پرداخت باید شامل یک ورودی مانیفست باشند که این سرویس را تبلیغ می‌کند.

برای اطمینان از اینکه فقط رابط کاربری سیستم می‌تواند به QuickAccessWalletService متصل شود، برنامه پرداخت NFC باید مجوز android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE را درخواست کند. درخواست این مجوز تضمین می‌کند که فقط رابط کاربری سیستم می‌تواند به QuickAccessWalletService متصل شود.

<service
     android:name=".MyQuickAccessWalletService"
     android:label="@string/my_default_tile_label"
     android:icon="@drawable/my_default_icon_label"
     android:logo="@drawable/my_wallet_logo"
     android:permission="android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE">
     <intent-filter>
         <action android:name="android.service.quickaccesswallet.QuickAccessWalletService" />
         <category android:name="android.intent.category.DEFAULT"/>
     </intent-filter>
     <meta-data android:name="android.quickaccesswallet"
          android:resource="@xml/quickaccesswallet_configuration" />
     <meta-data
          android:name="android.quickaccesswallet.tile"
          android:resource="@drawable/my_default_tile_icon"/>
</service>

اطلاعات تکمیلی در مورد کیف پول در فایل XML لینک شده موجود است:

<quickaccesswallet-service
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:settingsActivity="com.example.android.SettingsActivity"
   android:shortcutLongLabel="@string/my_wallet_empty_state_text"
   android:shortcutShortLabel="@string/my_wallet_button_text"
   android:targetActivity="com.example.android.WalletActivity"/>

در مرحله بعد، برنامه پرداخت باید QuickAccessWalletService پیاده‌سازی کند:

public class MyQuickAccessWalletService extends QuickAccessWalletService {

    @Override
    public void onWalletCardsRequested(
            GetWalletCardsRequest request,
            GetWalletCardsCallback callback) {
        GetWalletCardsResponse response = // generate response
        callback.onSuccess(response);
    }

    @Override
    public void onWalletCardSelected(SelectWalletCardRequest request) {
        // selecting a card should ensure that it is used when making an NFC payment
    }

    @Override
    public void onWalletDismissed() {
        // May un-select card if the wallet app has the concept of a 'default'
        // payment method
    }
}

اگر HostApduService شروع به مدیریت یک تراکنش NFC کند و در نتیجه، فعالیتی را برای نمایش پیشرفت و نتیجه پرداخت آغاز کند، باید سعی کند به QuickAccessWalletService متصل نیز ارجاع دهد و QuickAccessWalletService#sendEvent با نوع رویداد TYPE_NFC_PAYMENT_STARTED فراخوانی کند. این باعث می‌شود رابط کاربری Quick Access Wallet غیرفعال شود و به کاربر امکان مشاهده بدون مانع فعالیت پرداخت را بدهد.

برای مستندات بیشتر در مورد پیاده‌سازی QuickAccessWalletService ، به QuickAccessWalletService و آزمون CTS TestQuickAccessWalletService مراجعه کنید.

فعال کردن رابط کاربری کیف پول با دسترسی سریع در اندروید ۱۱

برای پیکربندی کیف پول دسترسی سریع (Quick Access Wallet) که از طریق منوی پاور در اندروید ۱۱ در دسترس باشد، هدف QuickAccessWallet را در نسخهٔ ساخت (build) بگنجانید و افزونهٔ globalactions.wallet را با اضافه کردن خط پررنگ در نمونه کد زیر به فایل overlay/frameworks/base/packages/SystemUI/res/values/config.xml فعال کنید.

<resources>
    ...
    <!-- SystemUI Plugins that can be loaded on user builds. -->
    <string-array name="config_pluginWhitelist" translatable="false">
        <item>com.android.systemui</item>
        <item>com.android.systemui.plugin.globalactions.wallet</item>
    </string-array>
</resources>

برنامه پرداخت NFC پیش‌فرض را در فایل پیکربندی تنظیمات با استفاده از def_nfc_payment_component مشخص کنید.

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

جزئیات پیاده‌سازی QuickAccessWalletService

QuickAccessWalletService سه متد انتزاعی دارد که باید پیاده‌سازی شوند: onWalletCardsRequested ، onWalletCardSelected و onWalletDismissed . نمودار توالی زیر، توالی فراخوانی را زمانی که کیف پول دسترسی سریع بلافاصله قبل از پرداخت NFC مشاهده می‌شود، نشان می‌دهد.

نمودار توالی کیف پول دسترسی سریع

مثال توالی فراخوانی هنگام مشاهده کیف پول دسترسی سریع
شکل ۴. نمونه‌ای از توالی فراخوانی هنگام مشاهده کیف پول دسترسی سریع.

همه نماهای کیف پول دسترسی سریع (Quick Access Wallet) با پرداخت NFC دنبال نمی‌شوند، اما شکل ۴ در بالا تمام قابلیت‌های سرویس QuickAccessWalletService را نشان می‌دهد. در این مثال، ارائه‌دهنده کارت کیف پول دسترسی سریع (QuickAccess Wallet) عناصر مشخص شده با رنگ آبی را پیاده‌سازی می‌کند. فرض بر این است که کارت‌های پرداخت در دستگاه در یک پایگاه داده ذخیره می‌شوند و از طریق رابطی به نام PaymentCardManager قابل دسترسی هستند. همچنین فرض بر این است که فعالیتی به نام PaymentActivity نتیجه پرداخت NFC را نمایش می‌دهد. روند کار به شرح زیر است:

  1. کاربر با انجام یک حرکت، کیف پول دسترسی سریع (Quick Access Wallet) را نمایش می‌دهد.
  2. رابط کاربری کیف پول دسترسی سریع (بخشی از رابط کاربری سیستم) مدیریت بسته را بررسی می‌کند تا ببیند آیا برنامه پرداخت NFC پیش‌فرض، QuickAccessWalletService را صادر می‌کند یا خیر.

    • اگر سرویس صادر نشود، کیف پول دسترسی سریع نمایش داده نمی‌شود.
  3. رابط کاربری کیف پول Quick Access به QuickAccessWalletService متصل می‌شود و onWalletCardsRequested را فراخوانی می‌کند. این متد یک شیء درخواست (request object) را دریافت می‌کند که حاوی داده‌هایی در مورد تعداد و اندازه کارت‌هایی است که می‌توانند ارائه شوند و یک فراخوانی برگشتی (callback) است. فراخوانی برگشتی را می‌توان از یک نخ پس‌زمینه (background thread) فراخوانی کرد.

  4. QuickAccessWalletService کارت‌هایی را که می‌خواهد نشان دهد محاسبه می‌کند، سپس متد onSuccess را در فراخوانی ارائه شده فراخوانی می‌کند. توصیه می‌شود که سرویس این اقدامات را در یک thread پس‌زمینه انجام دهد.

  5. به محض نمایش کارت‌ها، رابط کاربری سیستم با فراخوانی onWalletCardSelected QuickAccessWalletService اطلاع می‌دهد که اولین کارت انتخاب شده است.

    • هر بار که کاربر کارت جدیدی انتخاب می‌کند، onWalletCardSelected فراخوانی می‌شود.
    • حتی اگر کارت انتخاب‌شده‌ی فعلی تغییر نکرده باشد، ممکن است تابع onWalletCardSelected فراخوانی شود.
  6. وقتی کاربر کیف پول دسترسی سریع را رد می‌کند، رابط کاربری سیستم با فراخوانی onWalletDismissed به QuickAccessWalletService اطلاع می‌دهد.

در مثال بالا، کاربر تلفن را در محدوده یک پایانه پرداخت NFC قرار می‌دهد در حالی که کیف پول نمایش داده می‌شود. یکی از اجزای کلیدی مدیریت پرداخت‌های NFC، HostApduService است که باید برای پردازش APDUهای ارائه شده توسط خواننده NFC پیاده‌سازی شود (برای اطلاعات بیشتر، به شبیه‌سازی کارت مبتنی بر میزبان مراجعه کنید). فرض بر این است که برنامه پرداخت، فعالیتی را برای نمایش پیشرفت و نتیجه تعامل با پایانه NFC آغاز می‌کند. با این حال، رابط کاربری کیف پول سریع در بالای پنجره برنامه نمایش داده می‌شود، به این معنی که فعالیت پرداخت توسط رابط کاربری کیف پول سریع پنهان می‌شود. برای اصلاح این مشکل، برنامه باید به رابط کاربری سیستم اطلاع دهد که رابط کاربری کیف پول سریع باید رد شود. این کار را می‌تواند با دریافت ارجاع به QuickAccessWalletService متصل و فراخوانی sendWalletServiceEvent با نوع رویداد TYPE_NFC_PAYMENT_STARTED انجام دهد.

پیاده‌سازی نمونه QuickAccessWalletService

/** Sample implementation of {@link QuickAccessWalletService} */
@RequiresApi(VERSION_CODES.R)
public class MyQuickAccessWalletService extends QuickAccessWalletService {

  private static final String TAG = "QAWalletSvc";
  private ExecutorService executor;
  private PaymentCardManager paymentCardManager;

  @Override
  public void onCreate() {
    super.onCreate();
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      Log.w(TAG, "Should not run on pre-R devices");
      stopSelf();
      return;
    }
    executor = Executors.newSingleThreadExecutor();
    paymentCardManager = new PaymentCardManager();
  }

  @Override
  public void onDestroy() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.shutdownNow();
  }

  @Override
  public void onWalletCardsRequested(
      @NonNull GetWalletCardsRequest request, @NonNull GetWalletCardsCallback callback) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> {
          List<PaymentCard> paymentCards = paymentCardManager.getCards();
          int maxCards = Math.min(paymentCards.size(), request.getMaxCards());
          List<WalletCard> walletCards = new ArrayList<>(maxCards);
          int selectedIndex = 0;
          int cardWidthPx = request.getCardWidthPx();
          int cardHeightPx = request.getCardHeightPx();
          for (int index = 0; index < maxCards; index++) {
            PaymentCard paymentCard = paymentCards.get(index);
            WalletCard walletCard =
                new WalletCard.Builder(
                        paymentCard.getCardId(),
                        paymentCard.getCardImage(cardWidthPx, cardHeightPx),
                        paymentCard.getContentDescription(),
                        paymentCard.getPendingIntent())
                    .build();
            walletCards.add(walletCard);
            if (paymentCard.isSelected()) {
              selectedIndex = index;
            }
          }
          GetWalletCardsResponse response =
              new GetWalletCardsResponse(walletCards, selectedIndex);
          callback.onSuccess(response);
        });
  }

  @Override
  public void onWalletCardSelected(@NonNull SelectWalletCardRequest request) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> paymentCardManager.selectCardById(request.getCardId()));
  }

  @Override
  public void onWalletDismissed() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(() -> {
      paymentCardManager.removeCardOverrides();
    });
  }
}

برای جزئیات بیشتر در مورد QuickAccessWalletService ، به مرجع API مربوط به QuickAccessWalletService مراجعه کنید.

مجوزها

ورودی مانیفست برای QuickAccessWalletService باید به مجوز android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE که در اندروید ۱۱ معرفی شد، نیاز داشته باشد. این یک مجوز سطح امضا است که توسط رابط کاربری سیستم نگهداری می‌شود، به این معنی که فقط فرآیند رابط کاربری سیستم می‌تواند به پیاده‌سازی‌های QuickAccessWalletService متصل شود. توجه داشته باشید که برنامه‌های جانبی می‌توانند این مجوز را درخواست کرده و به داده‌های QuickAccessWalletService در دستگاه‌هایی که اندروید ۱۰ یا پایین‌تر دارند، دسترسی کامل داشته باشند. برای جلوگیری از این امر، توصیه می‌شود که سرویس، نسخه ساخت را در onCreate بررسی کرده و سرویس را فقط در دستگاه‌هایی که اندروید ۱۱ و بالاتر دارند، فعال کند. هیچ مجوز برنامه دیگری فراتر از مجوزهای لازم برای ارائه خدمات پرداخت شبیه‌سازی کارت میزبان مورد نیاز نیست.

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

تنظیمات در اندروید ۱۲

برای فعال یا غیرفعال کردن کیف پول دسترسی سریع از صفحه قفل، کاربران می‌توانند از گزینه نمایش کیف پول در تنظیمات > نمایش > صفحه قفل استفاده کنند. برای غیرفعال کردن کیف پول در سایه، کاربران باید آن را به صورت دستی در سایه تنظیمات سریع ویرایش کنند.

فعال یا غیرفعال کردن کیف پول از صفحه قفل

شکل ۵. نمایش کیف پول در صفحه قفل در تنظیمات.

تنظیمات در اندروید ۱۱

کاربران می‌توانند ویژگی کیف پول دسترسی سریع را از برنامه تنظیمات غیرفعال کنند. صفحه تنظیمات در تنظیمات > سیستم > حرکات > کارت‌ها و مجوزها یافت می‌شود.

صفحه تنظیمات برای فعال یا غیرفعال کردن ویژگی کیف پول دسترسی سریع
شکل ۶. صفحه تنظیمات برای فعال یا غیرفعال کردن ویژگی کیف پول دسترسی سریع.

سفارشی‌سازی

نمای کیف پول دسترسی سریع را به مکان دیگری در رابط کاربری سیستم اضافه کنید

رابط کاربری کیف پول دسترسی سریع (Quick Access Wallet UI) به عنوان یک افزونه سیستمی ساخته شده است. اگرچه پیاده‌سازی AOSP از آن در GlobalActionsDialog (که با فشار طولانی مدت روی صفحه نمایش نشان داده می‌شود) استفاده می‌کند، اما می‌توانید این ویژگی را تا زمانی که قرارداد مشخص شده توسط رابط افزونه را حفظ کنید، به ژست‌های حرکتی مختلف منتقل کنید.

public interface GlobalActionsPanelPlugin extends Plugin {

  /** Invoked when the view is shown */
  PanelViewController onPanelShown(Callbacks callbacks, boolean deviceLocked);

  /** Callbacks for interacting with the view container */
  interface Callbacks {
    /** Dismisses the view */
    void dismissGlobalActionsMenu();

    /** Starts a PendingIntent, dismissing the keyguard if necessary. */
    void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent);
  }

  /** Provides the Quick Access Wallet view */
  interface PanelViewController {

    /** Returns the QuickAccessWallet view, which may take any size */
    View getPanelContent();

    /** Invoked when the view is dismissed */
    void onDismissed();

    /** Invoked when the device is either locked or unlocked. */
    void onDeviceLockStateChanged(boolean locked);
  }
}

رابط کاربری کیف پول Quick Access، افزونه‌های GlobalActionsPanelPlugin و PanelViewController را پیاده‌سازی می‌کند. GlobalActionsDialog با استفاده از com.android.systemui.Dependency یک نمونه از افزونه کیف پول دریافت می‌کند:

GlobalActionsPanelPlugin mPanelPlugin =
    Dependency.get(ExtensionController.class)
        .newExtension(GlobalActionsPanelPlugin.class)
        .withPlugin(GlobalActionsPanelPlugin.class)
        .build()
        .get();

پس از بررسی اینکه افزونه تهی نیست و PanelViewController که توسط onPanelShown برگردانده می‌شود نیز تهی نیست، کادر محاوره‌ای View ارائه شده توسط getPanelContent را به View خود متصل می‌کند و callbackهای مناسبی را برای رویدادهای سیستم فراهم می‌کند.

// Construct a Wallet PanelViewController.
// `this` implements GlobalActionsPanelPlugin.Callbacks
GlobalActionsPanelPlugin.PanelViewController mPanelController =
    mPanelPlugin.onPanelShown(this, !mKeyguardStateController.isUnlocked());

// Attach the view
FrameLayout panelContainer = findViewById(R.id.my_panel_container);
FrameLayout.LayoutParams panelParams =
    new FrameLayout.LayoutParams(
        FrameLayout.LayoutParams.MATCH_PARENT,
        FrameLayout.LayoutParams.MATCH_PARENT);
panelContainer.addView(mPanelController.getPanelContent(), panelParams);

// Respond to unlock events (if the view can be accessed while the phone is locked)
keyguardStateController.addCallback(new KeyguardStateController.Callback() {
  @Override
  public void onUnlockedChanged() {
    boolean unlocked = keyguardStateController.isUnlocked()
        || keyguardStateController.canDismissLockScreen();
    mPanelController.onDeviceLockStateChanged(unlocked);
  }
});

// Implement GlobalActionsPanelPlugin.Callbacks
@Override
public void dismissGlobalActionsMenu() {
  dismissDialog();
}
@Override
public void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent) {
  mActivityStarter.startPendingIntentDismissingKeyguard(pendingIntent);
}

// Notify the wallet when the container view is dismissed
mPanelController.onDismissed();

برای حذف کیف پول دسترسی سریع از منوی پاور، هدف QuickAccessWallet را از ساخت سیستم حذف کنید. برای حذف کیف پول دسترسی سریع از منوی پاور اما اضافه کردن آن به یک نمای ارائه شده توسط رابط کاربری سیستم متفاوت، هدف ساخت را وارد کنید و ارجاعات به GlobalActionsPanelPlugin را از GlobalActionsImpl حذف کنید.

تنظیمات پیش‌فرض را تنظیم کنید

اندروید ۱۲

در اندروید ۱۲ یا بالاتر، کیف پول دسترسی سریع همیشه در سایه تنظیمات سریع قابل مشاهده است. قابلیت مشاهده کیف پول دسترسی سریع در صفحه قفل توسط تنظیم امن زیر محدود می‌شود: LOCKSCREEN_SHOW_WALLET . این تنظیم کنترل می‌کند که آیا آیکون کیف پول دسترسی سریع در پایین سمت راست صفحه قفل نشان داده شود یا خیر. این تنظیم به طور پیش‌فرض روی true تنظیم شده است، اما کاربر می‌تواند آن را در تنظیمات > نمایش > صفحه قفل > نمایش کیف پول غیرفعال کند.

اندروید ۱۱

در اندروید ۱۱، قابلیت مشاهده کیف پول دسترسی سریع توسط دو تنظیم امن محدود می‌شود: GLOBAL_ACTIONS_PANEL_ENABLED و GLOBAL_ACTIONS_PANEL_AVAILABLE . تنظیم AVAILABLE کنترل می‌کند که آیا این ویژگی می‌تواند در تنظیمات فعال یا غیرفعال شود. این تنظیم توسط WalletPluginService روی true تنظیم شده است. اگر QuickAccessWallet در نسخه گنجانده نشده باشد، این تنظیم false باقی می‌ماند. تنظیم ENABLED به طور پیش‌فرض در همان مکان روی true تنظیم شده است، اما کاربر می‌تواند آن را در تنظیمات غیرفعال کند. برای تغییر رفتار پیش‌فرض، WalletPluginService#enableFeatureInSettings را تغییر دهید.

اعتبارسنجی

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

آزمایش‌های CTS

تست‌های CTS واقع در cts/tests/quickaccesswallet را اجرا کنید.

تست‌های دستی برای اندروید ۱۲

آزمایش ویژگی‌های اصلی کیف پول دسترسی سریع (Quick Access Wallet) نیاز به یک پایانه پرداخت NFC (واقعی یا جعلی) و یک برنامه پرداخت NFC دارد که QuickAccessWalletService (برنامه کیف پول) را پیاده‌سازی می‌کند. ویژگی‌های اصلی که باید آزمایش شوند عبارتند از: در دسترس بودن، وضعیت صفر، انتخاب کارت و رفتار صفحه قفل.

در دسترس بودن

  • اگر برنامه پرداخت NFC پیش‌فرض از این ویژگی پشتیبانی نکند، کیف پول دسترسی سریع نه در تنظیمات سریع و نه در صفحه قفل قابل دسترسی نیست.
  • اگر برنامه پرداخت NFC پیش‌فرض از این ویژگی پشتیبانی کند، کیف پول دسترسی سریع در قسمت تنظیمات سریع قابل دسترسی است.
  • اگر برنامه پرداخت NFC پیش‌فرض از این ویژگی پشتیبانی کند و اگر تنظیم LOCKSCREEN_SHOW_WALLET روی true باشد، کیف پول دسترسی سریع در صفحه قفل قابل دسترسی است.
  • اگر برنامه پرداخت NFC پیش‌فرض از این ویژگی پشتیبانی کند و اگر تنظیم LOCKSCREEN_SHOW_WALLET false باشد، کیف پول دسترسی سریع در صفحه قفل قابل دسترسی نیست.

حالت صفر

  • اگر QuickAccessWalletService فعال و صادر شده باشد اما هیچ کارتی ارائه ندهد، کاشی موجود در سایه همانطور که در مثال شکل ۷ نشان داده شده است، ظاهر می‌شود. با کلیک بر روی کاشی، برنامه پرداخت NFC پیش‌فرض باز می‌شود.

    کاشی نمونه در سایه که برنامه پرداخت پیش‌فرض NFC را نشان می‌دهد

    شکل ۷. نمونه کاشی در سایه که برنامه پرداخت پیش‌فرض NFC را نشان می‌دهد.

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

  • صفحه قفل، آیکون کیف پول را نشان می‌دهد.

نمای وضعیت خالی در کیف پول دسترسی سریع

شکل ۸. نمای وضعیت خالی در رابط کاربری کیف پول دسترسی سریع.

حالت غیر صفر

  • اگر برنامه کیف پول یک یا چند کارت ارائه دهد، کاشی در سایه همانطور که در شکل 9 نشان داده شده است، ظاهر می‌شود.

    مثال کاشی در سایه وقتی که برنامه کیف پول یک یا چند کارت دارد

    شکل ۹. مثال کاشی در سایه وقتی که برنامه کیف پول یک یا چند کارت دارد.

  • با کلیک بر روی کاشی، یک چرخ فلک کارت نمایش داده می‌شود.

  • صفحه قفل دکمه‌ای را نشان می‌دهد که کیف پول دسترسی سریع را باز می‌کند.

    رابط کاربری کیف پول با دسترسی سریع و نمایش کارت

    شکل ۱۰. رابط کاربری کیف پول با دسترسی سریع به همراه کارت نمایش داده شده.

  • اگر کارت نمایش داده شده نشان دهنده یک روش پرداخت NFC باشد، نگه داشتن تلفن در مقابل یک پایانه پرداخت NFC منجر به استفاده از آن روش پرداخت شده و نمای کیف پول بسته می‌شود.

  • با کلیک بر روی کارت نمایش داده شده، فعالیت دقیق مربوط به آن کارت باز می‌شود.

  • اگر چندین کارت توسط QuickAccessWalletService ارائه شده باشد، کاربر می‌تواند بین کارت‌ها جابه‌جا شود.

  • منوی سرریز شامل یک ورودی است: تنظیمات صفحه قفل را باز کنید تا کاربر بتواند گزینه نمایش کیف پول را تغییر دهد.

تست‌های وضعیت قفل

  • اگر گوشی قفل باشد، کیف پول در نوار تنظیمات سریع قابل مشاهده است و توضیحی با عنوان « افزودن کارت در صورت عدم وجود کارت در برنامه پرداخت پیش‌فرض» یا «باز کردن قفل برای استفاده در صورت وجود کارت در برنامه پرداخت پیش‌فرض» در آن وجود دارد.
  • اگر تلفن قفل باشد، قابلیت مشاهده کیف پول در صفحه قفل توسط تنظیم Secure.LOCKSCREEN_SHOW_WALLET کنترل می‌شود که در تنظیمات قابل کنترل است.
  • اگر تلفن قفل باشد، LOCKSCREEN_SHOW_WALLET false باشد و هیچ کارتی در برنامه پرداخت NFC پیش‌فرض وجود نداشته باشد، کیف پول روی صفحه قفل نمایش داده نمی‌شود.
  • اگر گوشی قفل باشد، LOCKSCREEN_SHOW_WALLET true باشد و هیچ کارتی در برنامه پرداخت NFC پیش‌فرض وجود نداشته باشد، کیف پول روی صفحه قفل نمایش داده نمی‌شود.
  • اگر گوشی قفل باشد، LOCKSCREEN_SHOW_WALLET true باشد و کارت‌ها در برنامه پرداخت پیش‌فرض NFC وجود داشته باشند، کیف پول روی صفحه قفل نمایش داده می‌شود.
  • باز کردن قفل گوشی در حالی که کیف پول روی صفحه قفل نمایش داده می‌شود، منجر به درخواست کارت‌ها می‌شود که ممکن است منجر به محتوای متفاوت کارت شود.

تست‌های دسترسی‌پذیری

  • کاربران Talkback می‌توانند با کشیدن انگشت به چپ و راست و گوش دادن به توضیحات محتوای کارت‌ها، نمای کیف پول را پیمایش کنند.
  • با کشیدن انگشت به چپ و راست در حالت فعال بودن Talkback، هر کارت به نوبت انتخاب می‌شود. کاربران Talkback می‌توانند یک روش پرداخت NFC را در یک پایانه پرداخت NFC انتخاب و استفاده کنند.

تست‌های دستی برای اندروید ۱۱

آزمایش ویژگی‌های اصلی کیف پول دسترسی سریع (Quick Access Wallet) نیاز به یک پایانه پرداخت NFC (واقعی یا جعلی) و یک برنامه پرداخت NFC دارد که QuickAccessWalletService (برنامه کیف پول) را پیاده‌سازی می‌کند. ویژگی‌های اصلی که باید آزمایش شوند شامل در دسترس بودن، وضعیت صفر، انتخاب کارت و رفتار صفحه قفل است.

در دسترس بودن

  • اگر تنظیم GLOBAL_ACTIONS_PANEL_ENABLED true باشد و برنامه پرداخت پیش‌فرض NFC از این ویژگی پشتیبانی کند، کیف پول دسترسی سریع قابل دسترسی است.
  • اگر تنظیم GLOBAL_ACTIONS_PANEL_ENABLED false باشد و برنامه پرداخت NFC پیش‌فرض از این ویژگی پشتیبانی کند، کیف پول دسترسی سریع قابل دسترسی نیست .
  • اگر تنظیم GLOBAL_ACTIONS_PANEL_ENABLED true باشد و برنامه پرداخت پیش‌فرض NFC از این ویژگی پشتیبانی نکند ، کیف پول دسترسی سریع قابل دسترسی نیست .
  • اگر تنظیم GLOBAL_ACTIONS_PANEL_ENABLED false باشد و برنامه پرداخت NFC پیش‌فرض از این ویژگی پشتیبانی نکند ، کیف پول دسترسی سریع قابل دسترسی نیست .

حالت صفر

  • اگر QuickAccessWalletService فعال و صادر شده باشد اما هیچ کارتی ارائه ندهد، رابط کاربری Quick Access Wallet نمای وضعیت خالی را نمایش می‌دهد.
  • با کلیک بر روی نمای وضعیت خالی، برنامه کیف پول باز می‌شود.

    نمای وضعیت خالی در رابط کاربری کیف پول دسترسی سریع
    شکل ۱۱. نمای وضعیت خالی در رابط کاربری کیف پول دسترسی سریع.

حالت غیر صفر

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

    رابط کاربری کیف پول با دسترسی سریع و نمایش کارت
    شکل ۱۲. رابط کاربری کیف پول با دسترسی سریع و نمایش یک کارت.
  • اگر کارت نمایش داده شده نشان دهنده یک روش پرداخت NFC باشد، نگه داشتن تلفن در مقابل یک پایانه پرداخت NFC منجر به استفاده از آن روش پرداخت شده و نمای کیف پول بسته می‌شود.

  • کلیک روی کارت نمایش داده شده، نمای کیف پول را رد می‌کند و فعالیت دقیق آن کارت را باز می‌کند.

  • اگر چندین کارت توسط QuickAccessWalletService ارائه شده باشد، کاربر می‌تواند بین کارت‌ها جابه‌جا شود.

  • منوی سرریز شامل دو ورودی است: یکی که برنامه کیف پول را باز می‌کند و دیگری که صفحه نمایش کارت‌ها و مجوزها را در تنظیمات باز می‌کند.

تست‌های وضعیت قفل

  • اگر تلفن قفل باشد، قابلیت مشاهده کیف پول توسط Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT کنترل می‌شود که می‌توان آن را در تنظیمات کنترل کرد.
  • اگر گوشی قفل باشد و POWER_MENU_LOCK_SHOW_CONTENT مقدار false داشته باشد، کیف پول نمایش داده نمی‌شود.
  • اگر گوشی قفل باشد و POWER_MENU_LOCK_SHOW_CONTENT برابر true باشد، کیف پول نمایش داده می‌شود.
  • باز کردن قفل گوشی در حالی که کیف پول روی صفحه قفل نمایش داده می‌شود، منجر به درخواست مجدد کارت‌ها می‌شود که ممکن است منجر به محتوای متفاوت کارت شود.

تست‌های دسترسی‌پذیری

  • کاربران TalkBack می‌توانند با کشیدن انگشت به چپ و راست و گوش دادن به توضیحات محتوای کارت‌ها، نمای کیف پول را پیمایش کنند.
  • با فعال بودن TalkBack و کشیدن انگشت به چپ و راست، هر کارت به نوبت انتخاب می‌شود. کاربران TalkBack می‌توانند یک روش پرداخت NFC را در پایانه پرداخت NFC انتخاب و استفاده کنند.