คำเชิญให้อัปเกรด Android

คำเชิญให้อัปเกรดเป็นขั้นตอนของผู้ใช้ที่แสดงฟีเจอร์ใหม่ๆ ที่สำคัญซึ่งรวมอยู่ในการอัปเกรดระบบปฏิบัติการ Android เวอร์ชันหลักที่พร้อมใช้งานในปัจจุบัน

ขั้นตอนดังกล่าวมีจุดประสงค์เพื่อช่วยโน้มน้าวให้ผู้ใช้อัปเกรดอุปกรณ์เป็นระบบปฏิบัติการเวอร์ชันล่าสุด

เมื่ออุปกรณ์มีการอัปเกรดระบบปฏิบัติการที่รอการอนุมัติจากผู้ใช้ ผู้ใช้จะได้รับการแจ้งเตือนแบบพุช ที่แสดงฟีเจอร์ใหม่และเชิญให้ผู้ใช้ทำการ อัปเกรด

ผู้ผลิตอุปกรณ์สามารถเปิดใช้ Upgrade Party สำหรับอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android ได้โดยส่งแบบฟอร์มคำขอเปิดใช้งานคำเชิญให้อัปเกรด Android

ปรับแต่งประสบการณ์คำเชิญให้อัปเกรด

คุณปรับแต่งประสบการณ์การเชิญให้อัปเกรดได้ด้วยวิธีต่อไปนี้

  • นำฟีเจอร์ที่ไม่เกี่ยวข้องออก
  • อัปเดตภาษาในบล็อกข้อความ
  • แก้ไขภาพเคลื่อนไหว สี และแบบอักษรให้เข้ากับแบรนด์

หากต้องการปรับแต่งขั้นตอนการอัปเกรด โปรดอ่านหลักเกณฑ์ในคู่มือสไตล์คำเชิญให้อัปเกรด และระบุข้อมูลการปรับแต่งในการตอบแบบฟอร์ม

คู่มือแนะนำเกี่ยวกับสไตล์คำเชิญให้อัปเกรด

ใช้คู่มือสไตล์นี้เพื่อแก้ไขรูปลักษณ์ของคำเชิญให้อัปเกรดให้เหมาะกับแบรนด์ของคุณเอง (หน้าจอ สี แบบอักษร) เราขอแนะนำให้คุณรักษารูปแบบและขนาดให้ใกล้เคียงกับการออกแบบเดิม

ขั้นตอนคำเชิญให้อัปเกรดมีคอมโพเนนต์ 3 รายการต่อไปนี้

  • หน้าจออินโทร
  • หน้าจอฟีเจอร์
  • หน้าจอช่วงท้าย
รูปที่ 1 หน้าจอ 3 ประเภทในขั้นตอนการเชิญให้อัปเกรด

ภาพเคลื่อนไหวบนแต่ละหน้าจอจะช่วยอธิบายฟีเจอร์แต่ละอย่าง

หน้าจออินโทร

หน้าจอเริ่มต้นมีภาพเคลื่อนไหวสั้นๆ ที่ต้อนรับผู้ใช้และ กระตุ้นให้ผู้ใช้เริ่มโฟลว์ที่แสดงในหน้าจอเริ่มต้น

การจัดวาง
รูปที่ 2 เลย์เอาต์ไวร์เฟรมสำหรับหน้าจอข้อมูลเบื้องต้นเกี่ยวกับคำเชิญให้อัปเกรด

ภาพเคลื่อนไหวของอุปกรณ์ประกอบด้วยสิ่งต่อไปนี้เสมอ

  • พื้นหลังสีขาวและรูปร่างหลากสี
  • กรอบอุปกรณ์
  • เนื้อหา UI
การจัดรูปแบบ

หากเลือกปรับใช้สไตล์ Material You คุณจะใช้สีและรูปร่างเริ่มต้น ที่แสดงในตัวอย่างได้

รูปที่ 3 รูปแบบสีเริ่มต้นสำหรับขั้นตอนการเชิญให้อัปเกรด

หากใช้สีแบรนด์ของคุณเอง โปรดตรวจสอบว่าสีดังกล่าวเข้ากันได้ดีกับพื้นหลัง UI

การเคลื่อนไหว

ตัวเลือกที่ 1: มีนาฬิกาบนหน้าจอหลัก

  1. ตัวเลขปรากฏบนหน้าจอ
  2. ตัวเลขจะเลื่อนไปตรงกลางขณะที่ขนาดเล็กลง กรอบโทรศัพท์มือถือจะปรากฏขึ้น
  3. โทรศัพท์มีขนาดเล็กลง รูปร่างจะเริ่มปรากฏบนหน้าจอ
  4. ภาพเคลื่อนไหวเสร็จสมบูรณ์แล้ว รูปร่างจะเคลื่อนไหวอย่างช้าๆ ต่อไป
รูปที่ 4 เลย์เอาต์ไวร์เฟรมสำหรับคำเชิญให้อัปเกรด ภาพเคลื่อนไหวหน้าจอแนะนำพร้อมนาฬิกา
รูปที่ 5 ภาพเคลื่อนไหวตัวอย่างสำหรับหน้าจอเริ่มต้น พร้อมนาฬิกา

ตัวเลือกที่ 2: ไม่มีนาฬิกาบนหน้าจอหลัก

  1. โทรศัพท์มือถือปรากฏขึ้นบนหน้าจอ
  2. โทรศัพท์จะเลื่อนไปอยู่ตรงกลางขณะที่ขนาดใหญ่ขึ้น รูปร่างเริ่ม ปรากฏบนหน้าจอ
  3. โทรศัพท์จะขยายขนาดสูงสุดและรูปร่างจะเคลื่อนที่ต่อไป
รูปที่ 6 เลย์เอาต์ไวร์เฟรมสำหรับคำเชิญให้อัปเกรด ภาพเคลื่อนไหวหน้าจอเริ่มต้นที่ไม่มีนาฬิกา
รูปที่ 7 ภาพเคลื่อนไหวตัวอย่างสำหรับหน้าจอเริ่มต้น ที่ไม่มีนาฬิกา

หน้าจอฟีเจอร์

หน้าจอฟีเจอร์แต่ละหน้าจะไฮไลต์ฟีเจอร์ในระบบปฏิบัติการใหม่

การจัดวาง
รูปที่ 8 เลย์เอาต์ไวร์เฟรมสำหรับหน้าจอฟีเจอร์คำเชิญให้อัปเกรด

ภาพเคลื่อนไหวของอุปกรณ์ประกอบด้วยสิ่งต่อไปนี้เสมอ

  • พื้นหลังสีสันสดใส
  • เฟรมของอุปกรณ์
  • เนื้อหา UI
การจัดรูปแบบ
  • เลือกสีพื้นหลังที่เข้ากันได้ดีกับเนื้อหา UI และรูปลักษณ์ทั่วไป
  • ภายในหน้าจอ ให้ตั้งค่าขนาดแบบอักษรที่อ่านได้ง่าย หากจำเป็น ให้ตั้งค่า แบบอักษรขนาดใหญ่ขึ้น
การเคลื่อนไหว

บันทึกภาพเคลื่อนไหวของโฟลว์ของแต่ละฟีเจอร์ รวมถึงการโต้ตอบด้วยการสัมผัส ส่งออกภาพที่บันทึกเป็นไฟล์ Lottie

หน้าจอช่วงท้าย

หน้าจอตอนท้ายจะทำให้ขั้นตอนเสร็จสมบูรณ์ ซึ่งจะช่วยให้ผู้ใช้ทราบว่าตนได้ผ่านหน้าจอทั้งหมดแล้ว

การจัดวาง
รูปที่ 9 เลย์เอาต์ไวร์เฟรมสำหรับหน้าจอตอนท้ายของคำเชิญให้อัปเกรด

ภาพเคลื่อนไหวของอุปกรณ์ประกอบด้วยสิ่งต่อไปนี้เสมอ

  • ครึ่งวงกลมบนพื้นหลัง (รวมถึงรูปร่างเคลื่อนไหว)
  • เฟรมของอุปกรณ์
  • เนื้อหา UI
การจัดรูปแบบ
  • เลือกสีพื้นหลังที่เข้ากันได้ดีกับเนื้อหา UI และรูปลักษณ์ทั่วไป
  • ใช้รูปครึ่งวงกลม
การเคลื่อนไหว

ทำตามขั้นตอนการแสดงภาพเคลื่อนไหวของหน้าจอตอนท้ายมาตรฐาน

  1. โทรศัพท์มือถือขยับขึ้นเล็กน้อย
  2. วงกลมจะปรากฏในพื้นหลัง
  3. รูปทรงต่างๆ ปรากฏขึ้นจากด้านหลังโทรศัพท์มือถือ
  4. รูปร่างต่างๆ จะบินออกมาจากพื้นหลังเหมือนแถบกระดาษสีโปรยปราย
รูปที่ 10 เลย์เอาต์ไวร์เฟรมสำหรับภาพเคลื่อนไหวของหน้าจอตอนท้ายของคำเชิญให้อัปเกรด
รูปที่ 11 ภาพเคลื่อนไหวของหน้าจอตอนท้ายตัวอย่าง

ทดสอบขั้นตอนการเชิญให้อัปเกรด

ไปก่อนหน้านี้แล้ว
  1. ในอุปกรณ์ Android ให้ไปที่การตั้งค่า > Google > อัปเกรดการแก้ไขข้อบกพร่องของปาร์ตี้
  2. เตรียมทริกเกอร์สำหรับคำเชิญให้อัปเกรดสำหรับระบบปฏิบัติการของอุปกรณ์ที่เกี่ยวข้อง (ขึ้นอยู่กับเวอร์ชันของระบบปฏิบัติการปัจจุบันและขั้นตอนคำเชิญให้อัปเกรดที่เฉพาะเจาะจงเพื่อ ทดสอบ โดยทำอย่างใดอย่างหนึ่งต่อไปนี้
    1. คลิกเขียนการอัปเกรดปลอม (เวอร์ชันปัจจุบัน) (เช่น หากคุณใช้ระบบปฏิบัติการ Android 13 ระบบจะทริกเกอร์ขั้นตอนการทดสอบ Android 13)
    2. คลิกเขียนการอัปเกรดที่รอดำเนินการ (เวอร์ชันปัจจุบัน + 1) (เช่น หากคุณใช้ระบบปฏิบัติการ Android 12 ระบบจะทริกเกอร์ขั้นตอนการทดสอบ Android 13)
    3. คลิกรายงานการอัปเกรดระบบปฏิบัติการ
  3. คลิกการแจ้งเตือนที่ได้รับ หรือคลิกเปิดคำเชิญให้อัปเกรด

ตัวเลือกทริกเกอร์สำหรับการเชิญให้อัปเกรด

การทริกเกอร์โฟลว์คำเชิญให้อัปเกรดทำได้ 3 วิธี 1. อัตโนมัติ 2. ออกอากาศ 3. SDK ของบริการ Google Play ทริกเกอร์แล้ว

อัตโนมัติ - การแจ้งเตือนที่ Google ทริกเกอร์ (สำหรับอุปกรณ์ที่ใช้ gOTA เท่านั้น)

สำหรับอุปกรณ์ OEM ที่ใช้ gOTA การผสานรวมจะเกิดขึ้นโดยอัตโนมัติและไม่จำเป็นต้องมีขั้นตอนการผสานรวม Upgrade Invite เมื่อตรวจพบการอัปเกรดระบบปฏิบัติการเวอร์ชันหลักที่รอดำเนินการ แล้ว ระบบจะส่งการแจ้งเตือนแบบพุชไปยังอุปกรณ์จากบริการ ของ Google Play ซึ่งจะนำไปสู่ขั้นตอนคำเชิญให้อัปเกรด

การออกอากาศของ Android - การแจ้งเตือนที่ Google เรียกใช้ (แนะนำ)

การออกอากาศในแอปเป็นวิธีที่ง่ายที่สุดและแนะนำในการผสานรวมขั้นตอนการเชิญให้อัปเกรด

Broadcast Receiver ช่วยให้คุณทริกเกอร์โฟลว์คำเชิญให้อัปเกรดจากแอปได้โดยใช้ข้อความออกอากาศ การออกอากาศจะส่งการแจ้งเตือนแบบพุช ไปยังอุปกรณ์จากบริการ Google Play ซึ่งจะนำไปสู่ขั้นตอนคำเชิญให้อัปเกรด

ข้อกำหนดเบื้องต้นของการออกอากาศ

หากต้องการเตรียมแอป ให้ทำตามขั้นตอนในส่วนต่อไปนี้

ตรวจสอบว่าไฟล์การกำหนดค่าของแอปใช้ค่าต่อไปนี้

  • minSdkVersion 14 ขึ้นไป
  • compileSdkVersion 28 ขึ้นไป
  • usesPermission ของ android.permission.RECOVERY

ส่งประกาศ

ดูวิธีการสำหรับแอป (หรือโค้ด) ของ OEM เพื่อส่งการออกอากาศของ Android เพื่อทริกเกอร์การแจ้งเตือนแบบพุชได้ที่ด้านล่าง

  1. ส่งการออกอากาศพร้อมการดำเนินการ

    com.google.android.gms.growth.upgradeparty.upgradeinvite.ACTION_SYSTEM_UPDATE
    
  2. เพิ่มแพ็กเกจ com.google.android.gms ลงในการออกอากาศ

    com.google.android.gms
    

ข้อกำหนดเพิ่มเติม

นอกจากนี้ ขั้นตอนการเชิญให้อัปเกรดยังช่วยให้ผู้ใช้อัปเกรดระบบปฏิบัติการได้โดยตรง จากขั้นตอนดังกล่าวด้วย

หากต้องการให้การทำงานนี้เป็นไปได้ ให้เปิดเผย Intent ที่กำหนดเองซึ่ง Google สามารถเรียกใช้จาก โฟลว์คำเชิญให้อัปเกรดซึ่งทริกเกอร์การดาวน์โหลดการอัปเดตได้

ตัวอย่างการใช้การประกาศ

ดูตัวอย่างการออกอากาศของแอปพลิเคชันต่อไปนี้

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);

ค่าของคีย์ EXTRA_PENDING_ANDROID_OS_VERSION_NUMBER คือจำนวนเต็ม ที่ระบุเวอร์ชันของระบบปฏิบัติการที่รอดำเนินการ (ในตัวอย่างนี้ เวอร์ชัน Android ที่จะ ติดตั้งคือ 14) ระบบจะใช้ข้อมูลนี้เพื่อกำหนดว่าโฟลว์คำเชิญให้อัปเกรดใดที่จะ ทริกเกอร์

SDK ของบริการ Google Play - การทริกเกอร์โฟลว์เท่านั้น

SDK ของบุคคลที่สามช่วยให้คุณทริกเกอร์โฟลว์คำเชิญให้อัปเกรดจากแอป หรือการแจ้งเตือน OTA ของคุณเองได้ ใช้ API ภายนอกของบุคคลที่สามเพื่อเปิดใช้งาน ขั้นตอนการเชิญให้อัปเกรด เราไม่ค่อยแนะนำให้ใช้วิธีนี้

สิ่งที่ต้องมีก่อน

หากต้องการเตรียมแอป ให้ทำตามขั้นตอนในส่วนต่อไปนี้

ตรวจสอบว่าไฟล์บิลด์ของแอปใช้ค่าต่อไปนี้

  • minSdkVersion 14 ขึ้นไป
  • compileSdkVersion 28 ขึ้นไป

กำหนดค่าแอป

วิธีกำหนดค่าแอป

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

ที่เก็บ 2. เพิ่มทรัพยากร Dependency สำหรับ Google Growth SDK ลงในไฟล์ Gradle ระดับแอปของโมดูล ซึ่งโดยปกติคือ app/build.gradle

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. หากต้องการระบุทรัพยากร Dependency ของไคลเอ็นต์ ให้รวมไลบรารีต่อไปนี้

    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
    

การเริ่มต้น API

  1. หากต้องการเริ่มต้นไคลเอ็นต์ ให้ใช้คลาส UpgradeParty ดังนี้

    import com.google.android.gms.growth.UpgradeParty;
    UpgradeParty.getClient(activity);
    
  2. พารามิเตอร์กิจกรรมควรเป็นออบเจ็กต์กิจกรรมที่เริ่มต้น

ฟังก์ชัน API

UpgradePartyClient ที่ได้จะแสดงฟังก์ชันการทำงานต่อไปนี้

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;
}

แสดงผล Task ที่ตรวจสอบแบบไม่พร้อมกันว่าผู้ใช้มีสิทธิ์รับ คำเชิญให้อัปเกรดหรือไม่ ค่าบูลีนที่ได้จะระบุว่าผู้ใช้มีสิทธิ์หรือไม่

invokeUpgradeInvite

Task<Void> invokeUpgradeInvite();

เรียกใช้กิจกรรมคำเชิญให้อัปเกรด ออบเจ็กต์ _Task _ที่ได้จะระบุ ว่าเกิดข้อผิดพลาดขณะเริ่มกิจกรรมหรือไม่

รหัสข้อผิดพลาด

เมธอด API ทั้ง 2 รายการอาจล้มเหลวโดยมีข้อยกเว้นประเภท com.google.android.gms.common.api.ApiException ในกรณีดังกล่าว ผู้โทร ควรลองอีกครั้งในภายหลัง รหัสสถานะทั่วไปที่คาดไว้ มีดังนี้

  • INTERNAL_ERROR - สำหรับข้อผิดพลาดใดๆ ในโฟลว์ของตรรกะพื้นฐาน
  • หมดเวลา - หากจัดการคำขอไม่ทันเวลา
  • API_NOT_CONNECTED - เมื่อ API ไม่พร้อมใช้งาน (กล่าวคือ โมดูล UpgradeParty ยังไม่พร้อม)
  • NETWORK_ERROR - จัดการคำขอไม่ได้เนื่องจากข้อผิดพลาดเกี่ยวกับเครือข่าย
  • DEVELOPER_ERROR - ไม่อนุญาตให้แพ็กเกจที่เรียกใช้เข้าถึง UpgradeParty API

ตัวอย่างการใช้งาน 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);
             }
           });
   }