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

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

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

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

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

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

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

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

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

อัปเกรดคำแนะนำสไตล์คำเชิญ

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

ขั้นตอนคำเชิญอัปเกรดประกอบด้วยสามองค์ประกอบต่อไปนี้:

  • หน้าจอแนะนำ
  • หน้าจอคุณสมบัติ
  • หน้าจอเอาท์โทร
รูปที่ 1 หน้าจอทั้งสามประเภทในขั้นตอนการเชิญอัปเกรด

ภาพเคลื่อนไหวในแต่ละหน้าจอช่วยอธิบายแต่ละคุณสมบัติ

หน้าจอแนะนำ

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

เค้าโครง
รูปที่ 2 เค้าโครง Wireframe สำหรับหน้าจอแนะนำการเชิญอัปเกรด

ภาพเคลื่อนไหวของอุปกรณ์จะประกอบด้วย:

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

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

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

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

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

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

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

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

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

หน้าจอคุณสมบัติ

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

เค้าโครง
รูปที่ 8 เค้าโครง Wireframe สำหรับหน้าจอฟีเจอร์การเชิญอัปเกรด

ภาพเคลื่อนไหวของอุปกรณ์จะประกอบด้วย:

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

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

หน้าจอเอาท์โทร

หน้าจอด้านนอกทำให้โฟลว์เสร็จสมบูรณ์ มันแสดงให้ผู้ใช้รู้ว่าพวกเขาได้ผ่านหน้าจอทั้งหมดแล้ว

เค้าโครง
รูปที่ 9 เค้าโครง Wireframe สำหรับหน้าจอ Outro เชิญอัปเกรด

ภาพเคลื่อนไหวของอุปกรณ์จะประกอบด้วย:

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

ปฏิบัติตามโฟลว์แอนิเมชั่นหน้าจอด้านนอกมาตรฐาน:

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

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

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

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

มี 3 วิธีในการทริกเกอร์ขั้นตอนการเชิญการอัปเกรด: 1. อัตโนมัติ 2. การออกอากาศ 3. ทริกเกอร์ Play Services SDK

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

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

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

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

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

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

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

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

  • minSdkVersion 14 หรือสูงกว่า
  • CompilSdkVersion 28 หรือสูงกว่า
  • UsePermission ของ 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
    

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

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

เพื่อให้สิ่งนี้ได้ผล ให้แสดงความตั้งใจที่กำหนดเองซึ่ง 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) ใช้เพื่อกำหนดว่าโฟลว์คำเชิญอัปเกรดใดที่จะถูกทริกเกอร์

Play Services SDK - ทริกเกอร์โฟลว์เท่านั้น

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

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

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

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

  • minSdkVersion 14 หรือสูงกว่า
  • CompilSdkVersion 28 หรือสูงกว่า

กำหนดค่าแอปของคุณ

วิธีกำหนดค่าแอปของคุณ:

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

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

   dependencies {
    implementation files('<PATH_TO_BINARY>/play-services-growth-16.1.0-eap04.aar')
   }
  1. เพื่อให้การพึ่งพาของลูกค้ารวมไลบรารีต่อไปนี้:

    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 ที่เป็นผลลัพธ์จะแสดงฟังก์ชันการทำงานต่อไปนี้

มีสิทธิ์สำหรับคำเชิญอัปเกรด

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

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

เรียกใช้UpgradeInvite

Task<Void> invokeUpgradeInvite();

เรียกใช้กิจกรรมการเชิญอัปเกรด ผลลัพธ์ _Task _object บ่งชี้ว่ามีข้อผิดพลาดเกิดขึ้นเมื่อเริ่มต้นกิจกรรมหรือไม่

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

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

  • INTERNAL_ERROR - สำหรับข้อผิดพลาดใดๆ ในโฟลว์ของตรรกะพื้นฐาน
  • TIMEOUT - หากไม่สามารถจัดการคำขอได้ทันเวลา
  • 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);
             }
           });
   }