Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Android

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

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

ในฐานะนักพัฒนาแอปพลิเคชัน เราต้องการให้ผู้ใช้ทุกคนใช้แอปพลิเคชันเวอร์ชันล่าสุดของเรา

แต่เราจะแน่ใจได้อย่างไรว่าผู้ใช้ทราบถึงเวอร์ชันใหม่ของแอปพลิเคชันของเรา

คำตอบสำหรับคำถามนั้นค่อนข้างง่าย:ทำไมไม่แจ้งให้พวกเขาทราบเมื่อมีแอปพลิเคชันเวอร์ชันใหม่ออก?

คุณสามารถทำได้หลายวิธี:

  • ใช้การแจ้งเตือนแบบพุช
  • แจ้งให้พวกเขาทราบเมื่อมีการเปิดตัวแอปพลิเคชัน

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

เดี๋ยวก่อน นี่ไม่รวมไว้แล้วใช่ไหม

คุณคงคิดว่าฟังก์ชันประเภทนี้ควรรวมอยู่ในระบบปฏิบัติการมือถือสมัยใหม่อยู่แล้ว และคุณคงจะพูดถูก – แต่สำหรับ Android เท่านั้น

iOS (ปัจจุบัน) ไม่ได้ให้นักพัฒนาสามารถดูว่ามีแอปพลิเคชันเวอร์ชันใหม่หรือไม่ และแจ้งให้ผู้ใช้ทราบเกี่ยวกับเวอร์ชันดังกล่าว ใน Android คุณมีไลบรารีการอัปเดตในแอปซึ่งเป็นส่วนหนึ่งของไลบรารี Google Play

ด้วยเหตุนี้ และเนื่องจาก Flutter รองรับทั้งสองแพลตฟอร์ม ฉันจึงเลือกใช้แพ็คเกจที่โดดเด่นสองแพ็คเกจที่ช่วยคุณจัดการการอัปเดตเวอร์ชันให้กับแอปพลิเคชันของคุณ:

  1. ตัวอัปเกรด
  2. ในการอัปเดตแอป

ทั้งสองอย่างสามารถให้ผลลัพธ์ตามที่ต้องการได้ แต่จะแตกต่างกันอย่างมากในวิธีการทำ

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

หากคุณไม่ทำเช่นนั้น คุณจะเห็นข้อผิดพลาดต่อไปนี้เมื่อพยายามใช้แพ็คเกจใดแพ็คเกจหนึ่ง:

_ข้อผิดพลาดในการติดตั้ง (-10):แอปนี้ไม่ได้เป็นเจ้าของโดยผู้ใช้บนอุปกรณ์นี้ แอปจะ "เป็นเจ้าของ" หากได้มาจาก Play (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_APP_NOTเป็นเจ้าของ)

วิธีใช้แพ็คเกจอัปเดตในแอป

คุณควรรู้ทันทีว่าแพ็คเกจนี้จะใช้งานได้บน Android เท่านั้น เนื่องจากต้องอาศัยไลบรารีการอัปเดตในแอปสำหรับการทำงานภายใน

โดยพื้นฐานแล้วแพ็คเกจนี้เป็น wrapper สำหรับไลบรารี Android ด้านล่างนี้คือวิธีการ API ที่เปิดเผย:

  • 05 :ตรวจสอบว่ามีการอัพเดตหรือไม่
  • 12 :ดำเนินการอัปเดตทันที (เต็มหน้าจอ)
  • 20 :เริ่มการอัปเดตแบบยืดหยุ่น (ดาวน์โหลดพื้นหลัง)
  • 35 :ติดตั้งการอัปเดตแบบยืดหยุ่นที่มีอยู่จริง ๆ แล้ว

✋ หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างการอัปเดตทันทีหรือการอัปเดตแบบยืดหยุ่น ไปที่นี่

วิธีการตั้งค่าแพ็คเกจ

ขั้นแรก เพิ่มแพ็กเกจลงในไฟล์ pubspec.yaml ของคุณ:

dependencies:
 flutter:
 sdk: flutter
 in_app_update: ^3.0.0

จากนั้นดำเนินการ pub get.

ภายในแอปพลิเคชันของคุณ ซึ่งคุณตั้งใจจะใช้ตรรกะเพื่อจัดการกับการอัปเดตแอป ให้เพิ่มการนำเข้าต่อไปนี้:

import 'package:in_app_update/in_app_update.dart';

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

เราสามารถตรวจสอบได้ว่ามีการอัปเดตหรือไม่โดยใช้คุณสมบัติ updateAvailability หากมีการอัปเดต จะมีค่าเป็น UPDATE_AVAILABLE . ดังนั้น วิธีการของคุณอาจมีลักษณะดังนี้:

InAppUpdate.checkForUpdate().then((updateInfo) {
 if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
 //Logic to perform an update 
 }
});

ต่อไป เราต้องตัดสินใจว่าต้องการเรียกใช้การอัปเดตประเภทใด ไม่ว่าจะเป็นการอัปเดตแบบยืดหยุ่นหรือการอัปเดตทันที

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

หากต้องการเริ่มการอัปเดตทันที เราสามารถใช้ performImmediateUpdate วิธีการ เมธอดนี้จะส่งคืน AppUpdateResult enum ที่แจ้งให้คุณทราบว่าการอัปเดตสำเร็จหรือไม่

ก่อนที่จะเรียกใช้วิธีนี้เราจำเป็นต้องตรวจสอบว่าเราได้รับอนุญาตให้เรียกใช้การอัปเดตทันทีหรือไม่ เราทำสิ่งนั้นโดยเข้าไปที่ immediateUpdateAllowed ตั้งค่าสถานะบนวัตถุ AppUpdateInfo

หากเราต้องการเรียกใช้การอัปเดตที่ยืดหยุ่น เราจะใช้ startFleixbleUpdate วิธีการ สิ่งนี้ทำงานในเบื้องหลังและคล้ายกับวิธีการอัพเดตทันที นอกจากนี้ยังส่งกลับ enum AppUpdateResult

หากในสถานการณ์นี้การอัปเดตสำเร็จ เราจำเป็นต้องเรียก completeFlexibleUpdate วิธีการติดตั้งการอัปเดตแอปพลิเคชันของเรา

ดังนั้น หากเราดูข้อมูลโค้ดด้านบนและเพิ่มตรรกะสำหรับการอัปเดตประเภทต่างๆ จะมีลักษณะดังนี้:

InAppUpdate.checkForUpdate().then((updateInfo) {
 if (updateInfo.updateAvailability == UpdateAvailability.updateAvailable) {
 if (updateInfo.immediateUpdateAllowed) {
 // Perform immediate update
 InAppUpdate.performImmediateUpdate().then((appUpdateResult) {
 if (appUpdateResult == AppUpdateResult.success) {
 //App Update successful
 }
 });
 } else if (updateInfo.flexibleUpdateAllowed) {
 //Perform flexible update
 InAppUpdate.startFlexibleUpdate().then((appUpdateResult) {
 if (appUpdateResult == AppUpdateResult.success) {
 //App Update successful
 InAppUpdate.completeFlexibleUpdate();
 }
 });
 }
 }
});

วิธีใช้แพ็คเกจตัวอัปเกรด

ตรงข้ามกับตัวเลือกแรก ตัวเลือกนี้เสนอโซลูชันสำหรับทั้ง iOS และ Android โดยอาศัยการรวบรวมข้อมูลจากร้านค้าและตรวจสอบกับข้อมูลปัจจุบันจากแอปพลิเคชันเอง

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

วิธีการตั้งค่าแพ็คเกจ

ขั้นแรก เพิ่มแพ็กเกจลงในไฟล์ pubspec.yaml ของคุณ:

dependencies:
 flutter:
 sdk: flutter
 upgrader: ^5.0.0

จากนั้นดำเนินการ pub get.

ภายในแอปพลิเคชันของคุณ ซึ่งคุณตั้งใจจะใช้ตรรกะเพื่อจัดการกับการอัปเดตแอป ให้เพิ่มการนำเข้าต่อไปนี้:

import 'package:upgrader/upgrader.dart';

ความแตกต่างที่สำคัญระหว่างสองตัวเลือกนี้เป็นเพียง UI หนึ่งตัวเท่านั้น ดังนั้นให้เลือกอันที่เหมาะกับคุณที่สุด

หากต้องการรวมแพ็คเกจนี้ คุณจะต้องล้อมวิดเจ็ตร่างกายของคุณด้วย UpgradeAlert หรือ อัปเกรดการ์ด . ด้านล่างนี้คือตัวอย่าง:

class MyApp extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return MaterialApp(
 title: applicationName,
 home: UpgradeAlert( /// <------------------
 child: MainPage(
 key: Key("YOUR_KEY"),
 title: applicationName
 ),
 )
 );
 }
}

หากแอปพลิเคชันของคุณเวอร์ชันใหม่พร้อมใช้งานในร้านค้า คุณจะเห็นสิ่งนี้:

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

หากต้องการทดสอบสิ่งต่าง ๆ ตรวจสอบให้แน่ใจว่าคุณเพิ่มสิ่งนี้:

await Upgrader.clearSavedSettings()

ภายในวิธีการหลักของคุณในไฟล์ main.dart

โปรดทราบว่ามีการกำหนดค่ามากมายที่คุณสามารถตั้งค่าสำหรับแพ็คเกจตัวอัพเกรดได้ ฉันขอแนะนำให้คุณลองดูสิ่งเหล่านี้

วิธีทดสอบแพ็คเกจ

ไม่ว่าคุณจะเลือกใช้งานแพ็คเกจใด คุณจำเป็นต้องรู้ว่าตรรกะของคุณทำงานได้อย่างถูกต้อง

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

นี่คือสิ่งที่คุณต้องทำ:

  1. ลงชื่อเข้าใช้บัญชี Google Play Console ของคุณและไปที่แอปพลิเคชันที่คุณกำลังทำงานอยู่เพื่อให้มีตรรกะในการอัปเดต
  2. ภายใต้การตั้งค่า → การแชร์แอปภายใน ให้ไปที่จัดการผู้ทดสอบ และตรวจสอบให้แน่ใจว่าได้อนุญาตให้ผู้ทดสอบดาวน์โหลดและติดตั้งแอปพลิเคชันที่แชร์ คุณสามารถเลือกดำเนินการผ่านลิงก์หรือทางอีเมลได้

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

  1. จากนั้นไปที่การทดสอบ → การทดสอบภายใน แล้วคลิกปุ่มสร้างรุ่นใหม่ (ขวาบน)

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

  1. เมื่อคุณดำเนินการเปิดตัวแล้ว คุณสามารถกลับไปที่หน้าการทดสอบภายในหลักและคลิกที่แท็บผู้ทดสอบ คุณจะเห็นรายการอีเมลของผู้ทดสอบ (ตอนนี้ว่างเปล่า) คลิกที่ไอคอนลูกศรสีน้ำเงิน

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

  1. ในหน้าจอนี้ คุณสามารถเพิ่มตัวเองเป็นผู้ทดสอบภายในได้ (ในเพิ่มที่อยู่อีเมล)

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

  1. เมื่อเสร็จแล้ว คุณสามารถกลับไปที่หน้าต่างการทดสอบภายในได้ เลื่อนลงไปด้านล่างแล้วคุณจะเห็นวิธีที่ผู้ทดสอบเข้าร่วมการทดสอบของคุณ และคุณจะเห็นปุ่มคัดลอกลิงก์

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

หากคุณไม่ปฏิบัติตามขั้นตอนข้างต้น ลิงก์ที่สร้างขึ้นจะนำไปสู่หน้าที่ไม่พบ (ข้อผิดพลาด 404):

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

หากคุณทำทุกอย่างสำเร็จ คุณจะเห็นสิ่งต่อไปนี้เมื่อคุณคลิกลิงก์ที่สร้างขึ้น:

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

หากคุณเห็นข้อผิดพลาดนี้:

_ข้อผิดพลาดในการติดตั้ง (-6):ไม่อนุญาตให้ดาวน์โหลด/ติดตั้ง เนื่องจากสถานะอุปกรณ์ปัจจุบัน (เช่น แบตเตอรี่เหลือน้อย พื้นที่ดิสก์เหลือน้อย …) (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_INSTALL_NOTอนุญาต)

อาจหมายความว่าคุณกำลังใช้งานแอปพลิเคชันของคุณบนอุปกรณ์จำลอง และคุณต้องติดตั้ง Google Play Store บนอุปกรณ์นั้นและเข้าสู่ระบบ

สรุป

ฉันเขียนบทความนี้เพราะฉันต้องทำตามขั้นตอนเดียวกันเมื่อรวมแพ็คเกจการอัปเดตแอปเข้ากับแอปพลิเคชันของฉันเอง

คุณสามารถตรวจสอบได้ที่ Google Play Store:

การอัปเดตในแอป:วิธีแจ้งผู้ใช้ Flutter เวอร์ชันใหม่อย่างมีประสิทธิภาพ

และดูซอร์สโค้ดทั้งหมดได้ที่นี่:

ขอบคุณสำหรับการอ่าน!

เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น


No