เมื่อคุณเปิดตัวแอปพลิเคชันเวอร์ชันใหม่ คุณต้องการให้ผู้ใช้ทราบ ไม่ว่าคุณจะแก้ไขข้อบกพร่องร้ายแรง เพิ่มฟีเจอร์ใหม่ หรือแอปพลิเคชันทำงานได้ราบรื่นขึ้นหรือเร็วขึ้น พวกเขาก็จำเป็นต้องรู้ ป>
ในฐานะนักพัฒนาแอปพลิเคชัน เราต้องการให้ผู้ใช้ทุกคนใช้แอปพลิเคชันเวอร์ชันล่าสุดของเรา
แต่เราจะแน่ใจได้อย่างไรว่าผู้ใช้ทราบถึงเวอร์ชันใหม่ของแอปพลิเคชันของเรา
คำตอบสำหรับคำถามนั้นค่อนข้างง่าย:ทำไมไม่แจ้งให้พวกเขาทราบเมื่อมีแอปพลิเคชันเวอร์ชันใหม่ออก? ป>
คุณสามารถทำได้หลายวิธี:
- ใช้การแจ้งเตือนแบบพุช
- แจ้งให้พวกเขาทราบเมื่อมีการเปิดตัวแอปพลิเคชัน
เราจะไม่จัดการกับการแจ้งเตือนแบบพุชในบทความนี้ แต่เราจะมุ่งเน้นไปที่การแสดงวิธีที่คุณสามารถ (โดยใช้แพ็คเกจหนึ่งหรือสองแพ็คเกจ) แสดงกล่องโต้ตอบให้กับผู้ใช้ของคุณเพื่อแจ้งให้ทราบว่ามีแอปพลิเคชันเวอร์ชันใหม่ออกมา และวิธีจัดการกับการอัปเดต
เดี๋ยวก่อน นี่ไม่รวมไว้แล้วใช่ไหม
คุณคงคิดว่าฟังก์ชันประเภทนี้ควรรวมอยู่ในระบบปฏิบัติการมือถือสมัยใหม่อยู่แล้ว และคุณคงจะพูดถูก – แต่สำหรับ Android เท่านั้น ป>
iOS (ปัจจุบัน) ไม่ได้ให้นักพัฒนาสามารถดูว่ามีแอปพลิเคชันเวอร์ชันใหม่หรือไม่ และแจ้งให้ผู้ใช้ทราบเกี่ยวกับเวอร์ชันดังกล่าว ใน Android คุณมีไลบรารีการอัปเดตในแอปซึ่งเป็นส่วนหนึ่งของไลบรารี Google Play
ด้วยเหตุนี้ และเนื่องจาก Flutter รองรับทั้งสองแพลตฟอร์ม ฉันจึงเลือกใช้แพ็คเกจที่โดดเด่นสองแพ็คเกจที่ช่วยคุณจัดการการอัปเดตเวอร์ชันให้กับแอปพลิเคชันของคุณ:
- ตัวอัปเกรด
- ในการอัปเดตแอป
ทั้งสองอย่างสามารถให้ผลลัพธ์ตามที่ต้องการได้ แต่จะแตกต่างกันอย่างมากในวิธีการทำ
ก่อนที่เราจะเริ่ม สิ่งสำคัญคือต้องเข้าใจว่าคุณต้องมีเวอร์ชันของแอปพลิเคชันที่ติดตั้งโดยตรงจาก 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
),
)
);
}
}
หากแอปพลิเคชันของคุณเวอร์ชันใหม่พร้อมใช้งานในร้านค้า คุณจะเห็นสิ่งนี้:
หากต้องการทดสอบสิ่งต่าง ๆ ตรวจสอบให้แน่ใจว่าคุณเพิ่มสิ่งนี้:
await Upgrader.clearSavedSettings()
ภายในวิธีการหลักของคุณในไฟล์ main.dart
โปรดทราบว่ามีการกำหนดค่ามากมายที่คุณสามารถตั้งค่าสำหรับแพ็คเกจตัวอัพเกรดได้ ฉันขอแนะนำให้คุณลองดูสิ่งเหล่านี้
วิธีทดสอบแพ็คเกจ
ไม่ว่าคุณจะเลือกใช้งานแพ็คเกจใด คุณจำเป็นต้องรู้ว่าตรรกะของคุณทำงานได้อย่างถูกต้อง ป>
แต่คุณจะทำเช่นนั้นได้อย่างไรโดยไม่ปล่อยแอปพลิเคชันเวอร์ชันอย่างเป็นทางการของคุณออกมา? คุณสามารถใช้ตัวเลือกการทดสอบภายในใน Google Play Console เมื่อเผยแพร่เวอร์ชันใหม่ของแอปพลิเคชันของคุณให้กับผู้ทดสอบภายใน แอปพลิเคชันดังกล่าวจะไม่ใช่เวอร์ชันสาธารณะและจะช่วยให้คุณสามารถทดสอบฟังก์ชันการอัปเกรดได้
นี่คือสิ่งที่คุณต้องทำ:
- ลงชื่อเข้าใช้บัญชี Google Play Console ของคุณและไปที่แอปพลิเคชันที่คุณกำลังทำงานอยู่เพื่อให้มีตรรกะในการอัปเดต
- ภายใต้การตั้งค่า → การแชร์แอปภายใน ให้ไปที่จัดการผู้ทดสอบ และตรวจสอบให้แน่ใจว่าได้อนุญาตให้ผู้ทดสอบดาวน์โหลดและติดตั้งแอปพลิเคชันที่แชร์ คุณสามารถเลือกดำเนินการผ่านลิงก์หรือทางอีเมลได้
- จากนั้นไปที่การทดสอบ → การทดสอบภายใน แล้วคลิกปุ่มสร้างรุ่นใหม่ (ขวาบน)
- เมื่อคุณดำเนินการเปิดตัวแล้ว คุณสามารถกลับไปที่หน้าการทดสอบภายในหลักและคลิกที่แท็บผู้ทดสอบ คุณจะเห็นรายการอีเมลของผู้ทดสอบ (ตอนนี้ว่างเปล่า) คลิกที่ไอคอนลูกศรสีน้ำเงิน
- ในหน้าจอนี้ คุณสามารถเพิ่มตัวเองเป็นผู้ทดสอบภายในได้ (ในเพิ่มที่อยู่อีเมล)
- เมื่อเสร็จแล้ว คุณสามารถกลับไปที่หน้าต่างการทดสอบภายในได้ เลื่อนลงไปด้านล่างแล้วคุณจะเห็นวิธีที่ผู้ทดสอบเข้าร่วมการทดสอบของคุณ และคุณจะเห็นปุ่มคัดลอกลิงก์
ตอนนี้คุณสามารถคลิกปุ่มและส่งลิงก์ให้ตัวเองเพื่อให้คุณสามารถดาวน์โหลดแอปพลิเคชันเวอร์ชันใหม่ของคุณได้
หากคุณไม่ปฏิบัติตามขั้นตอนข้างต้น ลิงก์ที่สร้างขึ้นจะนำไปสู่หน้าที่ไม่พบ (ข้อผิดพลาด 404):
หากคุณทำทุกอย่างสำเร็จ คุณจะเห็นสิ่งต่อไปนี้เมื่อคุณคลิกลิงก์ที่สร้างขึ้น:
หากคุณเห็นข้อผิดพลาดนี้:
_ข้อผิดพลาดในการติดตั้ง (-6):ไม่อนุญาตให้ดาวน์โหลด/ติดตั้ง เนื่องจากสถานะอุปกรณ์ปัจจุบัน (เช่น แบตเตอรี่เหลือน้อย พื้นที่ดิสก์เหลือน้อย …) (https://developer.android.com/reference/com/google/android/play/core/install/model/InstallErrorCode#ERROR_INSTALL_NOTอนุญาต) ป>
อาจหมายความว่าคุณกำลังใช้งานแอปพลิเคชันของคุณบนอุปกรณ์จำลอง และคุณต้องติดตั้ง Google Play Store บนอุปกรณ์นั้นและเข้าสู่ระบบ
สรุป
ฉันเขียนบทความนี้เพราะฉันต้องทำตามขั้นตอนเดียวกันเมื่อรวมแพ็คเกจการอัปเดตแอปเข้ากับแอปพลิเคชันของฉันเอง ป>
คุณสามารถตรวจสอบได้ที่ Google Play Store:
และดูซอร์สโค้ดทั้งหมดได้ที่นี่:
ขอบคุณสำหรับการอ่าน!
เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น