Tính năng Truy cập nhanh vào Wallet (có trên Android 11) cho phép người dùng truy cập vào thẻ thanh toán và các thẻ liên quan ngay từ trình đơn nguồn. Các trường hợp sử dụng chính bao gồm việc chọn phương thức thanh toán phù hợp trước khi thực hiện giao dịch tại thiết bị đầu cuối NFC và nhanh chóng truy cập vào chuyến bay và các thẻ khác cho các sự kiện sắp tới.
Trên Android 12 trở lên, tính năng Truy cập nhanh vào Wallet có trong bảng thông báo như minh hoạ trong Hình 1 và Hình 2.
|
|
Trên Android 11, tính năng này có trong trình đơn nguồn như minh hoạ trong Hình 3.
Yêu cầu
Thiết bị của bạn phải có NFC để sử dụng tính năng Truy cập nhanh vào Wallet. Tính năng này liên kết với QuickAccessWalletService của ứng dụng thanh toán NFC mặc định. Điều này có nghĩa là thiết bị cũng phải hỗ trợ tính năng giả lập thẻ dựa trên máy chủ NFC (HCE).
Tổng quan về tính năng
Tính năng Truy cập nhanh vào Wallet có 2 phần: Giao diện người dùng Truy cập nhanh vào Wallet và nhà cung cấp thẻ Truy cập nhanh vào Wallet.
Trên Android 12 trở lên, giao diện người dùng Wallet chạy trong Giao diện người dùng hệ thống
và nằm trong
frameworks/base/packages/SystemUI/src/com/android/systemui/wallet. Trên
Android 11, giao diện người dùng Wallet nằm trong
platform/packages/apps/QuickAccessWallet,
phải được cài đặt và đưa vào danh sách cho phép.
Nhà cung cấp thẻ Truy cập nhanh vào Ví là ứng dụng thanh toán qua NFC mặc định. Người dùng có thể cài đặt nhiều ứng dụng thanh toán qua NFC cùng lúc, nhưng chỉ ứng dụng thanh toán qua NFC mặc định mới có thể hiện thẻ trên trình đơn nguồn. Bạn có thể chỉ định ứng dụng thanh toán NFC nào được đặt làm mặc định ban đầu, nhưng người dùng có thể chọn một ứng dụng khác trong phần Cài đặt. Nếu chỉ cài đặt một ứng dụng thanh toán qua NFC, thì ứng dụng đó sẽ tự động trở thành ứng dụng
mặc định (xem
CardEmulationManager).
Triển khai
Để cung cấp thẻ cho giao diện người dùng Truy cập nhanh vào Wallet, các ứng dụng thanh toán qua NFC
phải triển khai
QuickAccessWalletService.
Các ứng dụng thanh toán phải có một mục trong tệp kê khai quảng cáo dịch vụ.
Để đảm bảo rằng chỉ Giao diện người dùng hệ thống mới có thể liên kết với QuickAccessWalletService, ứng dụng thanh toán qua NFC phải yêu cầu quyền android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE. Việc yêu cầu quyền này đảm bảo rằng chỉ Giao diện người dùng hệ thống mới có thể liên kết với 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>
Thông tin bổ sung về ví được đưa vào tệp XML được liên kết:
<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"/>
Tiếp theo, ứng dụng thanh toán phải triển khai 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
}
}
Nếu HostApduService bắt đầu xử lý một giao dịch bằng NFC và do đó, bắt đầu một Hoạt động để hiển thị tiến trình và kết quả của giao dịch thanh toán, thì ứng dụng này cũng nên cố gắng tham chiếu đến QuickAccessWalletService được liên kết và gọi QuickAccessWalletService#sendEvent với loại sự kiện là TYPE_NFC_PAYMENT_STARTED. Điều này khiến giao diện người dùng Truy cập nhanh vào Wallet bị đóng, nhờ đó người dùng có thể xem hoạt động thanh toán mà không bị cản trở.
Để biết thêm tài liệu về cách triển khai QuickAccessWalletService, hãy xem
QuickAccessWalletService
và bài kiểm thử CTS
TestQuickAccessWalletService.
Bật giao diện người dùng Truy cập nhanh vào Wallet trên Android 11
Để định cấu hình tính năng Truy cập nhanh vào Wallet có trong trình đơn nguồn trên Android 11, hãy đưa QuickAccessWallet mục tiêu vào bản dựng và bật trình bổ trợ globalactions.wallet bằng cách thêm dòng in đậm trong mã mẫu bên dưới vào tệp 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>
Ứng dụng thanh toán NFC mặc định phải hiển thị
QuickAccessWalletService
để cung cấp thẻ cho tính năng Truy cập nhanh vào Wallet. Nếu ứng dụng thanh toán qua NFC mặc định không xuất dịch vụ này, thì giao diện người dùng ví sẽ bị ẩn.
Thông tin chi tiết về cách triển khai QuickAccessWalletService
QuickAccessWalletService có 3 phương thức trừu tượng phải được triển khai: onWalletCardsRequested, onWalletCardSelected và onWalletDismissed. Sơ đồ trình tự bên dưới minh hoạ trình tự lệnh gọi khi tính năng Truy cập nhanh vào Wallet được xem ngay trước khi thanh toán bằng NFC.
Không phải tất cả các chế độ xem của tính năng Truy cập nhanh vào Wallet đều được theo sau bởi một giao dịch Thanh toán qua NFC, nhưng Hình 4 ở trên minh hoạ tất cả các chức năng của QuickAccessWalletService. Trong ví dụ này, nhà cung cấp thẻ Truy cập nhanh vào Wallet triển khai các phần tử được vạch ra bằng màu xanh dương. Giả sử rằng thẻ thanh toán được lưu trữ trên thiết bị trong một cơ sở dữ liệu và được truy cập thông qua một giao diện có tên là PaymentCardManager. Giả sử thêm rằng một hoạt động có tên là PaymentActivity hiển thị kết quả của một giao dịch thanh toán NFC. Quy trình diễn ra như sau:
- Người dùng thực hiện một cử chỉ để hiển thị tính năng Truy cập nhanh vào Wallet.
Giao diện người dùng Truy cập nhanh vào Wallet (một phần của Giao diện người dùng hệ thống) kiểm tra trình quản lý gói để xem ứng dụng thanh toán qua NFC mặc định có xuất
QuickAccessWalletServicehay không.- Nếu dịch vụ không được xuất, thì tính năng Truy cập nhanh vào Wallet sẽ không hiển thị.
Giao diện người dùng Truy cập nhanh vào Wallet liên kết với
QuickAccessWalletServicevà gọionWalletCardsRequested. Phương thức này lấy một đối tượng yêu cầu chứa dữ liệu về số lượng và kích thước của các thẻ có thể được cung cấp và một lệnh gọi lại. Lệnh gọi lại có thể được gọi từ một luồng trong nền.QuickAccessWalletServicetính toán các thẻ mà ứng dụng muốn hiển thị, sau đó gọi phương thứconSuccesstrên lệnh gọi lại được cung cấp. Bạn nên để dịch vụ thực hiện các thao tác này trên một luồng trong nền.Ngay sau khi các thẻ được hiển thị, Giao diện người dùng hệ thống sẽ thông báo cho
QuickAccessWalletServicerằng thẻ đầu tiên đã được chọn bằng cách gọionWalletCardSelected.onWalletCardSelectedđược gọi mỗi khi người dùng chọn một thẻ mới.onWalletCardSelectedcó thể được gọi ngay cả khi thẻ được chọn hiện tại không thay đổi.
Khi người dùng đóng tính năng Truy cập nhanh vào Wallet, Giao diện người dùng hệ thống sẽ thông báo cho
QuickAccessWalletServicebằng cách gọionWalletDismissed.
Trong ví dụ trên, người dùng đưa điện thoại vào phạm vi của thiết bị đầu cuối thanh toán NFC trong khi ví đang hiển thị. `HostApduService` là một thành phần chính của việc xử lý các giao dịch thanh toán NFC
. Bạn phải triển khai thành phần này để xử lý APDU
do trình đọc NFC cung cấp (để biết thêm thông tin, hãy xem
bài viết Giả lập thẻ dựa trên máy chủ).HostApduService
Giả sử rằng ứng dụng thanh toán bắt đầu một hoạt động để hiển thị tiến trình và kết quả của hoạt động tương tác với thiết bị đầu cuối NFC. Tuy nhiên, giao diện người dùng Truy cập nhanh vào Wallet được hiển thị ở trên cùng của cửa sổ ứng dụng, nghĩa là hoạt động thanh toán bị che khuất bởi giao diện người dùng Truy cập nhanh vào Wallet. Để khắc phục điều này, ứng dụng phải thông báo cho Giao diện người dùng hệ thống rằng giao diện người dùng Truy cập nhanh vào Wallet phải bị đóng. Ứng dụng có thể thực hiện việc này bằng cách tham chiếu đến QuickAccessWalletService được liên kết và gọi sendWalletServiceEvent với loại sự kiện TYPE_NFC_PAYMENT_STARTED.
Mẫu triển khai 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();
});
}
}
Để biết thêm thông tin chi tiết về QuickAccessWalletService, hãy xem
QuickAccessWalletService Tài liệu tham khảo API.
Quyền
Mục trong tệp kê khai cho QuickAccessWalletService phải yêu cầu quyền android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE được giới thiệu trong Android 11. Đây là quyền ở cấp chữ ký do Giao diện người dùng hệ thống nắm giữ. Điều này có nghĩa là chỉ quá trình Giao diện người dùng hệ thống mới có thể liên kết với các cách triển khai QuickAccessWalletService. Xin lưu ý rằng các ứng dụng được tải riêng có thể yêu cầu quyền này và có toàn quyền truy cập vào dữ liệu QuickAccessWalletService trên các thiết bị chạy Android 10 trở xuống. Để ngăn chặn điều này, bạn nên để dịch vụ kiểm tra phiên bản bản dựng trong onCreate và chỉ bật dịch vụ trên các thiết bị chạy Android 11 trở lên. Bạn không cần quyền cho ứng dụng nào khác ngoài những quyền cần thiết để cung cấp dịch vụ thanh toán giả lập thẻ dựa trên máy chủ.
Nếu ứng dụng thanh toán qua NFC mặc định không triển khai hoặc xuất QuickAccessWalletService, thì giao diện người dùng Truy cập nhanh vào Wallet sẽ không hiển thị.
Cài đặt trên Android 12
Để bật hoặc tắt tính năng Truy cập nhanh vào Wallet trên màn hình khoá, người dùng có thể sử dụng nút bật/tắt Hiện ví trong phần Cài đặt > Màn hình > Màn hình khoá. Để tắt ví trong bảng thông báo, người dùng phải chỉnh sửa ví theo cách thủ công trong bảng thông báo cài đặt nhanh.
Hình 5. Nút bật/tắt Hiện ví trong trang Màn hình khoá trong phần Cài đặt.
Cài đặt trên Android 11
Người dùng có thể tắt tính năng Truy cập nhanh vào Wallet trong ứng dụng Cài đặt. Trang cài đặt này nằm trong phần Cài đặt > Hệ thống > Cử chỉ > Thẻ và vé.
Tuỳ chỉnh
Thêm chế độ xem Truy cập nhanh vào Wallet vào một vị trí khác trong Giao diện người dùng hệ thống
Giao diện người dùng
Truy cập nhanh vào Wallet
được xây dựng dưới dạng một
trình bổ trợ hệ thống.
Mặc dù cách triển khai AOSP sử dụng trình bổ trợ này trong
GlobalActionsDialog
(hiển thị khi nhấn giữ nút nguồn), nhưng bạn có thể chuyển tính năng này sang một cử chỉ khác
miễn là bạn duy trì hợp đồng được chỉ định bởi giao diện trình bổ trợ.
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);
}
}
Giao diện người dùng Truy cập nhanh vào Wallet
triển khai GlobalActionsPanelPlugin và PanelViewController.
GlobalActionsDialog
tạo một thực thể của trình bổ trợ ví bằng cách sử dụng com.android.systemui.Dependency:
GlobalActionsPanelPlugin mPanelPlugin =
Dependency.get(ExtensionController.class)
.newExtension(GlobalActionsPanelPlugin.class)
.withPlugin(GlobalActionsPanelPlugin.class)
.build()
.get();
Sau khi kiểm tra để đảm bảo rằng trình bổ trợ không phải là giá trị null và PanelViewController
do onPanelShown trả về không phải là giá trị null, hộp thoại sẽ đính kèm View do
bởi getPanelContent cung cấp vào View của chính nó và cung cấp các lệnh gọi lại thích hợp cho
các sự kiện hệ thống.
// 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();
Để xoá tính năng Truy cập nhanh vào Wallet khỏi trình đơn nguồn, hãy bỏ qua mục tiêu QuickAccessWallet khỏi bản dựng hệ thống. Để xoá tính năng Truy cập nhanh vào Wallet khỏi trình đơn nguồn nhưng thêm tính năng này vào một chế độ xem khác do Giao diện người dùng hệ thống cung cấp, hãy đưa mục tiêu bản dựng vào và xoá các tham chiếu đến GlobalActionsPanelPlugin
khỏi
GlobalActionsImpl.
Đặt cấu hình mặc định
Android 12
Trên Android 12 trở lên, tính năng Truy cập nhanh vào Wallet luôn hiển thị trong bảng thông báo cài đặt nhanh. Chế độ hiển thị của tính năng Truy cập nhanh vào Wallet trên màn hình khoá được kiểm soát bởi chế độ cài đặt bảo mật sau: LOCKSCREEN_SHOW_WALLET. Chế độ cài đặt này kiểm soát việc biểu tượng Truy cập nhanh vào Wallet có hiển thị ở dưới cùng bên phải màn hình khoá hay không. Chế độ cài đặt này được đặt thành true theo mặc định, nhưng người dùng có thể tắt trong phần Cài đặt > Màn hình > Màn hình khoá > Hiện ví.
Android 11
Trên Android 11, chế độ hiển thị của tính năng Truy cập nhanh vào Wallet được kiểm soát bởi 2 chế độ cài đặt bảo mật: GLOBAL_ACTIONS_PANEL_ENABLED và GLOBAL_ACTIONS_PANEL_AVAILABLE. Chế độ cài đặt AVAILABLE kiểm soát việc có thể bật và tắt tính năng này trong phần Cài đặt hay không. Chế độ cài đặt này được
WalletPluginService đặt thành true.
Nếu QuickAccessWallet không được đưa vào bản dựng, thì chế độ cài đặt sẽ vẫn là false. Chế độ cài đặt ENABLED được đặt thành true theo mặc định ở cùng một vị trí, nhưng người dùng có thể tắt trong phần Cài đặt. Để thay đổi hành vi mặc định, hãy sửa đổi WalletPluginService#enableFeatureInSettings.
Xác nhận kết quả
Để xác thực việc triển khai tính năng Truy cập nhanh vào Wallet, hãy chạy các bài kiểm thử CTS và kiểm thử thủ công. Các thay đổi đối với trình bổ trợ cũng phải thực hiện các bài kiểm thử robolectric được đưa vào .
Bài kiểm thử CTS
Chạy các bài kiểm thử CTS nằm trong
cts/tests/quickaccesswallet.
Bài kiểm thử thủ công cho Android 12
Việc kiểm thử các tính năng cốt lõi của tính năng Truy cập nhanh vào Wallet yêu cầu phải có thiết bị đầu cuối thanh toán qua NFC (thật hoặc giả) và một ứng dụng thanh toán qua NFC triển khai QuickAccessWalletService (ứng dụng ví). Các tính năng cốt lõi phải được kiểm thử bao gồm: phạm vi cung cấp, trạng thái trống, lựa chọn thẻ và hành vi trên màn hình khoá.
Phạm vi cung cấp
- Nếu ứng dụng thanh toán NFC mặc định không hỗ trợ tính năng này, thì bạn sẽ không thể truy cập vào tính năng Truy cập nhanh vào Wallet trong phần cài đặt nhanh cũng như trên màn hình khoá.
- Nếu ứng dụng thanh toán qua NFC mặc định hỗ trợ tính năng này, thì bạn có thể truy cập vào tính năng Truy cập nhanh vào Wallet trong bảng thông báo Cài đặt nhanh.
- Nếu ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này và nếu chế độ cài đặt
LOCKSCREEN_SHOW_WALLETlàtrue, thì bạn có thể truy cập vào tính năng Truy cập nhanh vào Wallet trên màn hình khoá. - Nếu ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này và nếu chế độ cài đặt
LOCKSCREEN_SHOW_WALLETlàfalse, thì bạn sẽ không thể truy cập vào tính năng Truy cập nhanh vào Wallet trên màn hình khoá.
Trạng thái trống
Nếu
QuickAccessWalletServiceđược bật và xuất nhưng không cung cấp thẻ nào, thì ô trong Bảng thông báo sẽ xuất hiện như trong ví dụ ở Hình 7. Khi nhấp vào ô này, ứng dụng thanh toán qua NFC mặc định sẽ mở ra.
Hình 7. Ô mẫu trong bảng thông báo hiển thị ứng dụng thanh toán qua NFC mặc định.
Khi nhấp vào chế độ xem trạng thái trống như trong Hình 8, ứng dụng thanh toán qua NFC mặc định sẽ mở ra. Chế độ xem trạng thái trống này chỉ xuất hiện khi người dùng còn một thẻ trong ví, xoá thẻ đó khỏi trang chi tiết thẻ rồi quay lại chế độ xem ví.
Màn hình khoá hiển thị biểu tượng ví.
Hình 8. Chế độ xem trạng thái trống trong giao diện người dùng Truy cập nhanh vào Wallet.
Trạng thái không trống
Nếu ứng dụng ví cung cấp một hoặc nhiều thẻ, thì ô trong bảng thông báo sẽ xuất hiện như trong Hình 9.
Hình 9. Ô mẫu trong bảng thông báo khi ứng dụng ví có một hoặc nhiều thẻ.
Khi nhấp vào ô này, một băng chuyền thẻ sẽ xuất hiện.
Màn hình khoá hiển thị một nút mở tính năng Truy cập nhanh vào Wallet.
Hình 10. Giao diện người dùng Truy cập nhanh vào Wallet có hiển thị một thẻ.
Nếu thẻ được hiển thị đại diện cho một phương thức Thanh toán qua NFC, thì việc giữ điện thoại đến gần thiết bị thanh toán NFC sẽ dẫn đến việc phương thức thanh toán đó được sử dụng và chế độ xem ví bị đóng.
Khi nhấp vào một thẻ được hiển thị, hoạt động chi tiết cho thẻ đó sẽ mở ra.
Nếu
QuickAccessWalletServicecung cấp nhiều thẻ, thì người dùng có thể vuốt giữa các thẻ.Trình đơn mục bổ sung chứa một mục: mở phần cài đặt màn hình khoá để người dùng có thể thay đổi tuỳ chọn Hiện ví.
Bài kiểm thử trạng thái khoá
- Nếu điện thoại bị khoá, ví sẽ hiển thị trên bảng thông báo cài đặt nhanh, kèm theo nội dung mô tả Thêm thẻ nếu không có thẻ nào trong ứng dụng thanh toán mặc định hoặc mở khoá để sử dụng nếu có thẻ trong ứng dụng thanh toán mặc định.
- Nếu điện thoại bị khoá, chế độ hiển thị ví trên màn hình khoá sẽ được kiểm soát bởi chế độ cài đặt
Secure.LOCKSCREEN_SHOW_WALLETtrong phần Cài đặt. - Nếu điện thoại bị khoá,
LOCKSCREEN_SHOW_WALLETlàfalsevà không có thẻ nào trong ứng dụng thanh toán NFC mặc định, thì ví sẽ không hiển thị trên màn hình khoá. - Nếu điện thoại bị khoá,
LOCKSCREEN_SHOW_WALLETlàtruevà không có thẻ nào trong ứng dụng thanh toán NFC mặc định, thì ví sẽ không hiển thị trên màn hình khoá. - Nếu điện thoại bị khoá,
LOCKSCREEN_SHOW_WALLETlàtruevà có thẻ trong ứng dụng thanh toán NFC mặc định, thì ví sẽ hiển thị trên màn hình khoá. - Việc mở khoá điện thoại trong khi ví đang hiển thị trên màn hình khoá sẽ dẫn đến việc các thẻ được yêu cầu lại, điều này có thể dẫn đến nội dung thẻ khác.
Bài kiểm thử khả năng hỗ trợ tiếp cận
- Người dùng TalkBack có thể di chuyển trong chế độ xem ví bằng cách vuốt sang trái và phải cũng như bằng cách nghe nội dung mô tả của các thẻ.
- Khi bật TalkBack, việc vuốt sang trái và phải sẽ chọn từng thẻ theo lượt. Người dùng TalkBack có thể chọn và sử dụng phương thức thanh toán qua NFC tại thiết bị thanh toán qua NFC.
Bài kiểm thử thủ công cho Android 11
Việc kiểm thử các tính năng cốt lõi của tính năng Truy cập nhanh vào Wallet yêu cầu phải có thiết bị đầu cuối thanh toán qua NFC (thật hoặc giả) và một ứng dụng thanh toán qua NFC triển khai QuickAccessWalletService (ứng dụng ví). Các tính năng cốt lõi phải được kiểm thử bao gồm phạm vi cung cấp, trạng thái trống, lựa chọn thẻ và hành vi trên màn hình khoá.
Phạm vi cung cấp
- Nếu chế độ cài đặt
GLOBAL_ACTIONS_PANEL_ENABLEDlàtruevà ứng dụng thanh toán qua NFC mặc định hỗ trợ tính năng này, thì bạn có thể truy cập vào tính năng Truy cập nhanh vào Wallet. - Nếu chế độ cài đặt
GLOBAL_ACTIONS_PANEL_ENABLEDlàfalsevà ứng dụng thanh toán NFC mặc định hỗ trợ tính năng này, thì bạn không thể truy cập vào tính năng Truy cập nhanh vào Wallet. - Nếu chế độ cài đặt
GLOBAL_ACTIONS_PANEL_ENABLEDlàtruevà ứng dụng Thanh toán qua NFC mặc định không hỗ trợ tính năng này, thì bạn không thể truy cập vào tính năng Truy cập nhanh vào Wallet. - Nếu chế độ cài đặt
GLOBAL_ACTIONS_PANEL_ENABLEDlàfalsevà ứng dụng Thanh toán qua NFC mặc định không hỗ trợ tính năng này, thì bạn không thể truy cập vào tính năng Truy cập nhanh vào Wallet.
Trạng thái trống
- Nếu
QuickAccessWalletServiceđược bật và xuất nhưng không cung cấp thẻ nào, thì giao diện người dùng Truy cập nhanh vào Wallet sẽ hiển thị chế độ xem trạng thái trống. Khi nhấp vào chế độ xem trạng thái trống, ứng dụng ví sẽ mở ra.
Hình 11. Chế độ xem trạng thái trống trong giao diện người dùng Truy cập nhanh vào Wallet.
Trạng thái không trống
Nếu ứng dụng ví cung cấp một hoặc nhiều thẻ, thì các thẻ đó sẽ hiển thị trong giao diện người dùng Truy cập nhanh vào Wallet.
Hình 12. Giao diện người dùng Truy cập nhanh vào Wallet có hiển thị một thẻ được hiển thị. Nếu thẻ được hiển thị đại diện cho một phương thức Thanh toán qua NFC, thì việc giữ điện thoại đến gần thiết bị thanh toán NFC sẽ dẫn đến việc phương thức thanh toán đó được sử dụng và chế độ xem ví bị đóng.
Khi nhấp vào một thẻ được hiển thị, chế độ xem ví sẽ bị đóng và hoạt động chi tiết cho thẻ đó sẽ mở ra.
Nếu
QuickAccessWalletServicecung cấp nhiều thẻ, thì người dùng có thể vuốt giữa các thẻ.Trình đơn mục bổ sung chứa 2 mục: một mục mở ứng dụng ví và một mục mở màn hình Hiện thẻ và vé trong phần Cài đặt.
Bài kiểm thử trạng thái khoá
- Nếu điện thoại bị khoá, chế độ hiển thị ví sẽ được kiểm soát bởi chế độ cài đặt
Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENTtrong phần Cài đặt. - Nếu điện thoại bị khoá và
POWER_MENU_LOCK_SHOW_CONTENTlàfalse, thì ví sẽ không hiển thị. - Nếu điện thoại bị khoá và
POWER_MENU_LOCK_SHOW_CONTENTlàtrue, thì ví sẽ hiển thị. - Việc mở khoá điện thoại trong khi ví đang hiển thị trên màn hình khoá sẽ dẫn đến việc các thẻ được yêu cầu lại, điều này có thể dẫn đến nội dung thẻ khác.
Bài kiểm thử khả năng hỗ trợ tiếp cận
- Người dùng TalkBack có thể di chuyển trong chế độ xem ví bằng cách vuốt sang trái và phải cũng như bằng cách nghe nội dung mô tả của các thẻ.
- Khi bật TalkBack, việc vuốt sang trái và phải sẽ chọn từng thẻ theo lượt. Người dùng TalkBack có thể chọn và sử dụng phương thức thanh toán qua NFC tại thiết bị thanh toán NFC.