Lời mời nâng cấp Android

Lời mời nâng cấp là luồng người dùng giới thiệu các tính năng mới quan trọng có trong bản nâng cấp hệ điều hành Android chính hiện có.

Quy trình này nhằm mục đích giúp thuyết phục người dùng nâng cấp thiết bị của họ lên phiên bản hệ điều hành mới nhất.

Sau khi thiết bị có bản nâng cấp hệ điều hành đang chờ người dùng phê duyệt, người dùng sẽ nhận được thông báo đẩy hiển thị các tính năng mới và mời họ thực hiện nâng cấp.

Để bật Lời mời nâng cấp cho hệ điều hành Android của bạn, hãy đăng ký bằng cách sử dụng biểu mẫu Yêu cầu kích hoạt Lời mời nâng cấp Android .

Tùy chỉnh trải nghiệm Mời nâng cấp

Bạn có thể tùy chỉnh trải nghiệm Mời nâng cấp theo những cách sau:

  • Loại bỏ các tính năng không liên quan.
  • Cập nhật ngôn ngữ trong khối văn bản.
  • Sửa đổi hình ảnh động, màu sắc và phông chữ để phù hợp với thương hiệu của bạn.

Để tùy chỉnh quy trình, hãy xem lại các nguyên tắc trong Hướng dẫn về phong cách mời nâng cấp và đưa thông tin tùy chỉnh của bạn vào biểu mẫu Yêu cầu kích hoạt Lời mời nâng cấp Android .

Hướng dẫn phong cách mời nâng cấp

Sử dụng hướng dẫn về phong cách này để sửa đổi giao diện Mời nâng cấp cho phù hợp với thương hiệu của riêng bạn (màn hình, màu sắc, phông chữ). Chúng tôi khuyên bạn nên giữ kích thước và cấu trúc gần với thiết kế ban đầu.

Luồng Mời nâng cấp có ba thành phần sau:

  • Màn hình giới thiệu
  • Màn hình tính năng
  • Màn hình ngoài
Hình 1. Ba loại màn hình trong quy trình mời nâng cấp

Hình ảnh động trên mỗi màn hình giúp giải thích từng tính năng.

Màn hình giới thiệu

Màn hình giới thiệu chứa hoạt ảnh ngắn chào mừng người dùng và khuyến khích họ bắt đầu quy trình hiển thị trên màn hình giới thiệu.

Cách trình bày
Hình 2. Bố cục wireframe cho màn hình giới thiệu Mời nâng cấp

Hoạt ảnh của thiết bị luôn bao gồm:

  • Nền trắng và hình dạng đầy màu sắc
  • Khung thiết bị
  • nội dung giao diện người dùng
tạo kiểu

Nếu chọn điều chỉnh kiểu dáng của Material You , bạn có thể sử dụng màu sắc và hình dạng mặc định được hiển thị trong ví dụ.

Hình 3. Bảng màu mặc định cho quy trình Mời nâng cấp.

Nếu bạn sử dụng màu thương hiệu của riêng mình, hãy đảm bảo rằng màu đó hoạt động tốt với nền giao diện người dùng.

Cử động

Cách 1: Với đồng hồ trên màn hình chính

  1. Các con số xuất hiện trên màn hình.
  2. Các con số di chuyển về trung tâm trong khi giảm kích thước. Khung điện thoại di động xuất hiện.
  3. Điện thoại giảm kích thước. Các hình dạng bắt đầu xuất hiện trên màn hình.
  4. Hoạt hình đã hoàn thành. Các hình khối tiếp tục chuyển động nhẹ nhàng.
Hình 4. Bố cục wireframe cho hoạt ảnh màn hình giới thiệu Mời nâng cấp có đồng hồ.
Hình 5. Ví dụ hoạt hình cho màn hình giới thiệu có đồng hồ.

Cách 2: Không có đồng hồ trên màn hình chính

  1. Điện thoại di động vào màn hình.
  2. Điện thoại di chuyển về trung tâm đồng thời tăng kích thước. Các hình dạng bắt đầu xuất hiện trên màn hình.
  3. Điện thoại đạt kích thước tối đa và các hình dạng tiếp tục chuyển động.
Hình 6. Bố cục wireframe cho hoạt ảnh màn hình giới thiệu Mời nâng cấp không có đồng hồ.
Hình 7. Ví dụ hoạt hình cho màn hình giới thiệu không có đồng hồ.

Màn hình tính năng

Mỗi màn hình tính năng làm nổi bật một tính năng trong hệ điều hành mới.

Cách trình bày
Hình 8. Bố cục wireframe cho màn hình tính năng Mời nâng cấp.

Hoạt ảnh của thiết bị luôn bao gồm:

  • Nền đầy màu sắc
  • Khung thiết bị
  • nội dung giao diện người dùng
tạo kiểu
  • Chọn màu nền phù hợp với nội dung giao diện người dùng và hình thức chung.
  • Bên trong màn hình, hãy đặt kích thước phông chữ dễ đọc. Nếu cần, hãy đặt cỡ chữ lớn hơn.
Cử động

Ghi lại hoạt ảnh về từng quy trình của tính năng, bao gồm cả tương tác chạm. Xuất bản ghi dưới dạng tệp Lottie .

Màn hình ngoài

Màn hình outro hoàn thành quy trình. Nó cho người dùng biết rằng họ đã xem qua tất cả các màn hình.

Cách trình bày
Hình 9. Bố cục wireframe cho màn hình bên ngoài Mời nâng cấp.

Hoạt ảnh của thiết bị luôn bao gồm:

  • Nửa vòng tròn trên nền (cộng với hình dạng hoạt hình)
  • Khung thiết bị
  • nội dung giao diện người dùng
tạo kiểu
  • Chọn màu nền phù hợp với nội dung giao diện người dùng và hình thức chung.
  • Sử dụng hình nửa vòng tròn.
Cử động

Thực hiện theo luồng hoạt ảnh màn hình outro tiêu chuẩn:

  1. Điện thoại di động di chuyển lên một chút.
  2. Một vòng tròn xuất hiện trong nền.
  3. Hình dạng xuất hiện từ phía sau điện thoại di động.
  4. Các hình dạng bay ra khỏi nền giống như hoa giấy.
Hình 10. Bố cục wireframe cho hoạt ảnh bên ngoài màn hình Mời nâng cấp.
Hình 11. Ví dụ hoạt ảnh ngoài màn hình.

Kiểm tra quy trình mời nâng cấp

  1. Trên thiết bị Android, hãy truy cập: Cài đặt > Google > Gỡ lỗi bên nâng cấp .
  2. Chuẩn bị kích hoạt Mời nâng cấp cho hệ điều hành của thiết bị có liên quan (tùy thuộc vào phiên bản hệ điều hành hiện tại của bạn và quy trình Mời nâng cấp cụ thể để kiểm tra. Hoặc:
    1. Nhấn vào Viết Fake nâng cấp (phiên bản hiện tại) . (ví dụ: nếu bạn chạy hệ điều hành Android 13 thì điều này sẽ kích hoạt quy trình thử nghiệm Android 13)
    2. Nhấn vào Ghi chờ nâng cấp (phiên bản hiện tại + 1) . (ví dụ: nếu bạn chạy hệ điều hành Android 12 thì điều này sẽ kích hoạt quy trình thử nghiệm Android 13)
    3. Bấm vào Báo cáo nâng cấp hệ điều hành
  3. Nhấp vào thông báo đã nhận hoặc nhấp vào Mở lời mời nâng cấp.

Tùy chọn kích hoạt cho Lời mời nâng cấp

Có 3 cách khác nhau để kích hoạt luồng Mời nâng cấp: 1. tự động 2. phát sóng 3. Kích hoạt SDK dịch vụ Play

Tự động - Thông báo được kích hoạt bởi Google (chỉ dành cho thiết bị chạy gOTA)

Đối với các thiết bị OEM chạy gOTA, quá trình tích hợp diễn ra tự động và không yêu cầu các bước tích hợp Mời nâng cấp. Sau khi phát hiện thấy bản nâng cấp hệ điều hành chính đang chờ xử lý, thao tác này sẽ gửi thông báo đẩy tới thiết bị từ các dịch vụ của Google Play, dẫn đến luồng Mời nâng cấp.

Android Broadcast - Thông báo do Google kích hoạt (Được khuyến nghị)

Phát sóng ứng dụng là cách đơn giản nhất và được khuyên dùng để tích hợp quy trình Mời nâng cấp.

Bộ thu phát sóng cho phép bạn kích hoạt luồng Mời nâng cấp từ ứng dụng của mình bằng tin nhắn quảng bá. Chương trình phát sẽ gửi thông báo đẩy tới thiết bị từ các dịch vụ của Google Play, dẫn đến luồng Mời nâng cấp.

Điều kiện tiên quyết để phát sóng

Để chuẩn bị ứng dụng của bạn, hãy hoàn thành các bước trong các phần sau.

Đảm bảo rằng tệp cấu hình của ứng dụng của bạn sử dụng các giá trị sau:

  • MinSdkVersion từ 14 trở lên
  • Biên dịchSdkVersion từ 28 trở lên
  • Quyền sử dụng của android.permission.RECOVERY

Gửi chương trình phát sóng

Xem bên dưới hướng dẫn để ứng dụng OEM (hoặc mã) gửi chương trình phát sóng Android nhằm kích hoạt thông báo đẩy:

  1. Gửi phát sóng với hành động.

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. Thêm gói com.google.android.gms vào chương trình phát sóng.

    com.google.android.gms
    

Các yêu cầu bổ sung

Quy trình Mời nâng cấp cũng cho phép người dùng thực hiện nâng cấp hệ điều hành trực tiếp từ quy trình.

Để tính năng này hoạt động, hãy hiển thị mục đích tùy chỉnh mà Google có thể gọi từ quy trình Mời nâng cấp để kích hoạt quá trình tải xuống bản cập nhật.

Ví dụ về cách sử dụng phát sóng

Xem ví dụ sau về phát sóng ứng dụng:

Context context = getApplicationContext();
Intent upgradeInviteIntent = new Intent()
  .setAction( "com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE")
  .setPackage("com.google.android.gms");
  .putExtra("com.google.android.gms.growth.upgradeparty.upgradeinvite.EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER", 14);

context.sendBroadcast(updateIntent);

Giá trị của khóa EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER là Số nguyên cho biết phiên bản hệ điều hành đang chờ xử lý (trong ví dụ này, phiên bản Android sẽ được cài đặt là 14). Điều này được sử dụng để xác định luồng Mời nâng cấp nào sẽ được kích hoạt.

SDK dịch vụ Play - chỉ kích hoạt luồng

SDK của bên thứ ba cho phép bạn kích hoạt luồng Mời nâng cấp từ ứng dụng của bạn hoặc thông báo OTA của riêng bạn. Sử dụng API bên ngoài của bên thứ ba để tự kích hoạt quy trình Mời nâng cấp. Phương pháp này ít được khuyến khích hơn.

Điều kiện tiên quyết

Để chuẩn bị ứng dụng của bạn, hãy hoàn thành các bước trong các phần sau.

Đảm bảo rằng tệp bản dựng của ứng dụng của bạn sử dụng các giá trị sau:

  • MinSdkVersion từ 14 trở lên
  • Biên dịchSdkVersion từ 28 trở lên

Định cấu hình ứng dụng của bạn

Để định cấu hình ứng dụng của bạn:

1. Extract the library from the provided .zip file, and place it in your

kho. 2. Thêm các phần phụ thuộc cho Google Development SDK vào tệp Gradle cấp ứng dụng của mô-đun, thường là app/build.gradle :

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. Để cung cấp các phần phụ thuộc của máy khách, hãy bao gồm các thư viện sau:

    com.google.android.gms:play-services-base:18.0.1
    com.google.android.gms:play-services-basement:18.0.0
    com.google.android.gms:play-services-tasks:18.0.1
    

Khởi tạo API

  1. Để khởi tạo một máy khách, hãy sử dụng lớp Nâng cấpParty:

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. Tham số hoạt động phải là đối tượng Hoạt động khởi tạo.

hàm API

Kết quả Nâng cấpPartyClient hiển thị chức năng sau.

isEligibleForUpgradeInvite

import com.google.android.gms.growth.UpgradeInviteEligibilityParams;

Task<Boolean> isEligibleForUpgradeInvite(UpgradeInviteEligibilityParams params);

/** Contains parameters for the eligibility query. */
class UpgradeInviteEligibilityParams {


/** Integer indicating the pending OS version (in this example, the Android version to be installed is 14). This is used to determine which Upgrade Invite flow will be triggered. */
  int pendingAndroidOsVersionNumber;
}

Trả về một Nhiệm vụ xác minh không đồng bộ xem người dùng có đủ điều kiện nhận Lời mời nâng cấp hay không. Giá trị boolean kết quả cho biết người dùng có đủ điều kiện hay không.

gọiNâng cấpMời

Task<Void> invokeUpgradeInvite();

Gọi hoạt động mời nâng cấp. Kết quả _Task _object cho biết liệu có xảy ra lỗi khi bắt đầu hoạt động hay không.

Mã lỗi

Cả hai phương pháp API đều có thể không thành công ngoại trừ loại com.google.android.gms.common.api.ApiException . Trong những trường hợp như vậy, người gọi sẽ thử lại sau. Mã trạng thái chung dự kiến) bao gồm:

  • INTERNAL_ERROR - đối với bất kỳ lỗi nào trong luồng logic cơ bản
  • THỜI GIAN CHỜ - nếu yêu cầu không thể được xử lý kịp thời
  • API_NOT_CONNECTED - khi API không có sẵn (nghĩa là mô-đun Nâng cấp chưa sẵn sàng)
  • NETWORK_ERROR - không thể xử lý yêu cầu do lỗi mạng
  • DEVELOPER_ERROR - gói gọi điện không được phép truy cập API Nâng cấp

Ví dụ về cách sử dụng SDK

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.growth.UpgradeParty;
import com.google.android.gms.growth.UpgradePartyClient;

public class SampleActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   final UpgradePartyClient client = UpgradeParty.getClient(this);

   // Hide the invocation button initially
   View startUpgradeInviteButton = findViewById(R.id.__some_button__);
   startUpgradeInviteButton.setVisibility(View.GONE);

   // Register an onClick handler to invoke the Upgrade Party Activity
   startUpgradeInviteButton
       .setOnClickListener(
           view -> {
             client
                 .invokeUpgradeInvite()
                 .addOnCompleteListener(
                     task -> {
                       if (!task.isSuccessful()) {
                         // Do something with error, see task.getException()
                       }
                     });
           });
   }

   // Check if eligible for an Upgrade Party
   client
       .isEligibleForUpgradeInvite()
       .addOnCompleteListener(
           task -> {
             if (!task.isSuccessful()) {
               // Do something with error, see task.getException()
             } else {
                  // Show/Hide invocation button, based on the result
                  int visibility = 
                        task.getResult() ? View.VISIBLE : View.GONE;
                  startUpgradeInviteButton.setVisibility(visibility);
             }
           });
   }