دسترسی سریع به «کیف پول»

ویژگی «کیف پول دسترسی سریع» که از Android 11 دردسترس است، به کاربر امکان می‌دهد مستقیماً از منو دکمه روشن/خاموش به کارت‌های پرداخت و مجوزهای مربوطه دسترسی پیدا کند. موارد استفاده اصلی شامل انتخاب روش پرداخت مناسب قبل‌از انجام تراکنش در پایانه NFC و دسترسی سریع به پروازها و مجوزهای دیگر برای رویدادهای آتی می‌شود.

در Android 12 یا بالاتر، ویژگی «کیف پول دسترسی سریع» ازطریق سایه همان‌طور که در شکل ۱ و شکل ۲ نشان داده شده است دردسترس است.

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

در Android 11، این ویژگی از منو دکمه روشن/خاموش دردسترس است، همان‌طور که در شکل ۳ نشان داده شده است.

ویژگی «دسترسی سریع به کیف پول» در منو روشن/خاموش
شکل ۳.‏ ویژگی «دسترسی سریع به کیف پول» در منو دکمه روشن/خاموش.

الزامات

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

مروری بر ویژگی‌ها

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

در Android 12 یا بالاتر، «واسط کاربر کیف پول» در «واسط کاربر سیستم» اجرا می‌شود و در frameworks/base/packages/SystemUI/src/com/android/systemui/wallet قرار دارد. در Android 11، واسط کاربر «کیف پول» که در platform/packages/apps/QuickAccessWallet قرار دارد باید نصب و در فهرست سفید قرار گیرد.

ارائه‌دهنده کارت «کیف پول دسترسی سریع» برنامه پرداخت 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 فراخوانی کند. این کار باعث می‌شود «میانای کاربر کیف پول دسترسی سریع» بسته شود و کاربر بتواند فعالیت پرداخت را بدون مانع ببیند.

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

فعال کردن واسط کاربر «دسترسی سریع به کیف پول» در Android 11

برای پیکربندی «کیف پول دسترسی سریع» به‌طوری که از منو دکمه روشن/خاموش در Android 11 دردسترس باشد، QuickAccessWallet هدف را در ساختار اضافه کنید و افزایه 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 مشاهده شود.

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

نمونه توالی تماس هنگام مشاهده «کیف پول دسترسی سریع»
شکل ۴. نمونه توالی تماس هنگام مشاهده «کیف پول دسترسی سریع».

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

  1. کاربر اشاره‌ای را برای بالا آوردن «کیف پول دسترسی سریع» انجام می‌دهد.
  2. میانای کاربر «کیف پول دسترسی سریع» (بخشی از میانای کاربر سامانه) مدیر بسته را بررسی می‌کند تا ببیند آیا برنامه پرداخت NFC پیش‌فرض QuickAccessWalletService را صادر می‌کند یا نه.

    • اگر سرویس صادر نشود، «کیف پول دسترسی سریع» نمایش داده نمی‌شود.
  3. رابط کاربری «کیف پول دسترسی سریع» به QuickAccessWalletService متصل می‌شود و onWalletCardsRequested را فراخوانی می‌کند. این روش یک شیء درخواست را می‌گیرد که حاوی داده‌هایی درباره تعداد و اندازه کارت‌هایی است که می‌توان ارائه داد و یک فراخوانی برگشتی. از رشته پس‌زمینه می‌توان با این برگشت تماس گرفت.

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

  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، به مرجع میانای برنامه‌سازی کاربردی QuickAccessWalletService مراجعه کنید.

اجازه‌ها

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

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

تنظیمات در Android 12

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

برای فعال یا غیرفعال کردن «کیف پول» از صفحه قفل، روشن/ خاموش کنید

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

تنظیمات در Android 11

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

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

سفارشی‌سازی

افزودن نمای «کیف پول دسترسی سریع» به مکان دیگری در «میانای کاربری سیستم»

واسط کاربر «کیف پول دسترسی سریع» به‌صورت افزایه سیستم ساخته شده است. اگرچه پیاده‌سازی 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);
  }
}

رابط کاربری «کیف پول» با دسترسی سریع 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 خود پیوست می‌کند و کارگزاری‌های مناسبی برای رویدادهای سیستم ارائه می‌دهد.

// 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 بردارید.

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

‫Android نسخه ۱۲

در Android 12 یا نسخه‌های بالاتر، «کیف پول دسترسی سریع» همیشه در سایه تنظیمات فوری قابل‌مشاهده است. نمایان بودن «دسترسی سریع به کیف پول» در صفحه قفل با تنظیمات امن زیر محدود شده است: LOCKSCREEN_SHOW_WALLET. این تنظیم کنترل می‌کند که نماد «کیف پول دسترسی سریع» در پایین سمت چپ صفحه قفل نشان داده شود یا نه. این تنظیم به‌طور پیش‌فرض روی true تنظیم شده است، اما کاربر می‌تواند آن را در تنظیمات > نمایشگر > صفحه قفل > نمایش کیف پول خاموش کند.

Android 11

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

اعتبارسنجی

برای تأیید پیاده‌سازی «کیف پول دسترسی سریع»، CTS و آزمایش‌های دستی را اجرا کنید. تغییرات افزایه باید آزمایش‌های Robolectric را نیز اجرا کند.

آزمایش‌های CTS

آزمایش‌های CTS واقع در cts/tests/quickaccesswallet را اجرا کنید.

آزمایش‌های دستی برای Android 12

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

دردسترس بودن

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

وضعیت صفر

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

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

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

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

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

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

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

وضعیت غیرصفر

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

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

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

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

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

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

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

  • اگر کارت نمایش‌داده‌شده نشان‌دهنده روش پرداخت 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 انتخاب و استفاده کنند.

آزمایش‌های دستی برای Android 11

آزمایش ویژگی‌های اصلی «کیف پول دسترسی سریع» به پایانه پرداخت 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 فعال و صادر شده باشد اما هیچ کارتی ارائه نکند، رابط کاربری «کیف پول دسترسی سریع» نمای وضعیت خالی را نمایش می‌دهد.
  • با کلیک کردن روی نمای حالت خالی، برنامه کیف پول باز می‌شود.

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

وضعیت غیرصفر

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

    رابط کاربری «کیف پول» با دسترسی سریع که کارتی را نشان می‌دهد
    شکل ۱۲. واسط کاربر «کیف پول» با دسترسی سریع که کارتی در آن نمایش داده می‌شود.
  • اگر کارت نمایش‌داده‌شده نشان‌دهنده روش پرداخت 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 انتخاب و استفاده کنند.