ลบบัญชีในแอป iOS: ขั้นตอนที่ต้องทดสอบก่อนส่ง Apple
โดย Mehdi Azizi
อัปเดตเมื่อ , 7 นาที
ปุ่มลบบัญชี ข้อมูลที่เกี่ยวข้อง การสมัครสมาชิก และการล็อกอินใหม่: เช็กลิสต์ทดสอบขั้นตอนนี้ก่อนส่งให้ App Review
มีแค่ปุ่มยังไม่พอ ต้องตรวจว่าอะไรหายไปจริง
ถ้าแอปของคุณให้ผู้ใช้สร้างบัญชีได้ Apple กำหนดให้ผู้ใช้ต้องเริ่มลบบัญชีได้จากในแอป การปิดใช้งานบัญชีเฉยๆ ไม่ถือว่าทำตามข้อกำหนดนี้ ขั้นตอนต้องหาเจอง่ายและอธิบายผลที่จะตามมา ถ้ามีบางส่วนต้องไปทำต่อบนเว็บ ลิงก์ต้องพาไปที่หน้านั้นโดยตรง แหล่งที่มา: การลบบัญชีตามข้อกำหนดของ Apple
งานจึงไม่ได้จบแค่ปุ่มสีแดงในหน้าตั้งค่า คุณต้องทำรายการข้อมูล สั่งลบฝั่งเซิร์ฟเวอร์ จัดการข้อผิดพลาด และตรวจสิ่งที่ผู้ใช้เห็นหลังจากนั้น คู่มือนี้เป็นเช็กลิสต์ทดสอบทั้งด้านโปรดักต์และด้านเทคนิค ส่วนข้อมูลที่มีข้อบังคับให้ต้องเก็บไว้ ต้องจัดการให้เหมาะกับธุรกิจของคุณ
เริ่มจากแผนที่ข้อมูล
ลองนึกถึงแอปสมมติสำหรับจดบันทึกการอ่านหนังสือ แอปนี้มีบัญชี โปรไฟล์ โน้ตส่วนตัว และรูปปกหนังสือที่ผู้ใช้อัปโหลด ตัวอย่างด้านล่างคือแผนที่ต้องตรวจสอบ ไม่ใช่การลบที่ผมเคยทำจริงบนแอปของ Devoria
- ข้อมูลล็อกอิน: จะทำให้บัญชีใช้งานไม่ได้หลังลบอย่างไร?
- โปรไฟล์และโน้ต: แถวข้อมูลไหนเป็นของผู้ใช้คนนี้ และลบอย่างไร?
- รูปที่จัดเก็บไว้: ขั้นตอนไหนลบไฟล์และการอ้างอิงถึงไฟล์เหล่านั้น?
- แคชในโทรศัพท์: หน้าจอล้างข้อมูลในเครื่องเมื่อการลบสำเร็จจริงแล้วหรือไม่?
- บริการภายนอก: ข้อมูลที่ผูกกับบัญชีนี้ต้องลบแยกต่างหากหรือไม่?
- ข้อมูลที่ต้องเก็บไว้: ข้อมูลอะไร เพราะข้อบังคับข้อไหน และแจ้งผู้ใช้อย่างไร?
แผนที่นี้ช่วยให้คุณไม่ต้องมาเจอทีหลังว่ารูปยังเข้าถึงได้ ทั้งที่ข้อมูลผู้ใช้หายไปแล้ว และยังบอกคุณด้วยว่าต้องตามหาอะไรบ้างตอนทดสอบ
ขั้นตอนที่อ่านเข้าใจง่ายใน 4 สถานะ
นี่คือข้อเสนอสำหรับแอปสมมติ ให้ปรับตามผลที่เกิดขึ้นจริงในโปรดักต์ของคุณ:
- ตั้งค่าบัญชี มีเมนู "ลบบัญชีของฉัน" ให้เข้าถึงได้เสมอ
- ยืนยัน หน้าจออธิบายว่าข้อมูลไหนจะถูกลบ และมีปุ่มยกเลิกที่เข้าใจง่ายพอๆ กับปุ่มลบ
- กำลังดำเนินการ ปุ่มป้องกันการกดส่งคำขอซ้ำ และหน้าจอแสดงว่ากำลังดำเนินการอยู่
- ผลลัพธ์ ถ้าสำเร็จจริงจะพาไปยังสถานะออกจากระบบ ถ้าล้มเหลวจะแสดงข้อความที่มีประโยชน์และให้ลองใหม่ได้ โดยไม่อ้างว่าบัญชีถูกลบไปแล้ว
ถ้าการลบใช้เวลา Apple ยอมรับขั้นตอนแบบล่าช้าได้ โดยต้องแจ้งผู้ใช้และยืนยันเมื่อเสร็จสิ้น แอปต้องไม่ทำให้ผู้ใช้เข้าใจว่าลบเสร็จแล้ว ทั้งที่เพิ่งบันทึกคำขอไว้เท่านั้น เอกสารของ Apple ฉบับเดียวกันยังอธิบายกรณีที่ต้องยืนยันตัวตนอีกครั้ง และข้อยกเว้นสำหรับธุรกิจที่มีการกำกับดูแลเข้มงวด
สิ่งที่ต้องเตรียมไว้ถ้าใช้ Supabase
การลบผู้ใช้ใน Auth อย่างเดียว ไม่ได้พิสูจน์ว่าข้อมูลทั้งหมดในโปรดักต์ของคุณถูกจัดการแล้ว Supabase อธิบายไว้ว่าผู้ใช้ที่ยังมีออบเจกต์ใน Storage จะลบไม่ได้จนกว่าจะแก้ปัญหานี้ เอกสารยังระบุด้วยว่าการลบผู้ใช้ไม่ได้ทำให้ JWT ที่ออกไปแล้วทั้งหมดหมดอายุทันที คุณต้องคำนึงถึงอายุของ JWT เหล่านี้ตอนออกแบบ แหล่งที่มา: การจัดการผู้ใช้ของ Supabase
ดังนั้นให้สร้างขั้นตอนฝั่งเซิร์ฟเวอร์ที่ตรวจสอบตัวตนของผู้ส่งคำขอ และทรัพยากรที่เป็นของเขา อย่าเชื่อ ID ที่โทรศัพท์ส่งมาเองเพื่อเลือกบัญชีที่จะลบ สิทธิ์ผู้ดูแลระบบต้องอยู่ฝั่งเซิร์ฟเวอร์เท่านั้น ตามเอกสารเรื่องคีย์ของ Supabase
ถ้าการลบมีหลายขั้นตอน ให้กำหนดว่าการลองใหม่ต้องทำอะไร ถ้าขั้นแรกสำเร็จแต่ขั้นถัดไปล้มเหลว เช่น ถ้าไฟล์ถูกลบไปแล้ว คำขอใหม่ต้องไม่ล้มเหลวเพียงเพราะหาไฟล์ไม่เจอ นี่คือสถานการณ์ที่ต้องเขียนไว้ก่อนทดสอบ ไม่ใช่พฤติกรรมที่เดาเอาเอง
บัญชีกับการสมัครสมาชิก: ตรวจแยกกันสองเรื่อง
ผู้ใช้อาจลบบัญชีได้ ในขณะที่การสมัครสมาชิกผ่าน Apple ยังคงดำเนินอยู่ Apple กำหนดให้อธิบายว่าการเรียกเก็บเงินจะเป็นอย่างไรต่อ และให้เข้าถึงหน้าจัดการการสมัครสมาชิกได้ ถ้าคุณใช้ Sign in with Apple ให้เตรียมการเพิกถอนโทเคนอย่างเหมาะสมด้วย รายละเอียดเหล่านี้อยู่ในแนวทางของ Apple เรื่องการลบบัญชี
ในแผนทดสอบ ให้แยกการหายไปของบัญชี สถานะการเข้าถึงแบบเสียเงิน และการจัดการการสมัครสมาชิกออกจากกัน คู่มือสมัครสมาชิกหรือซื้อครั้งเดียว จะช่วยให้คุณวางขั้นตอนนี้ให้เข้ากับโมเดลรายได้ของคุณ
เช็กลิสต์ที่ต้องรันบนบิลด์ทดสอบ
ใช้เฉพาะบัญชีทดสอบและข้อมูลสมมติ จดบิลด์ อุปกรณ์ ผลที่เห็น และข้อจำกัดของการตรวจแต่ละข้อ
- ยกเลิก บัญชีและข้อมูลยังเข้าถึงได้ตามเดิม
- ลบบัญชีที่มีข้อมูลครบ สถานะสุดท้ายตรงกับที่แจ้งไว้ และข้อมูลที่เกี่ยวข้องถูกลบจริง
- ตัดอินเทอร์เน็ต แอปไม่แสดงว่าสำเร็จทั้งที่ไม่สำเร็จ
- ลองใหม่หลังล้มเหลวบางส่วน คำขอสำเร็จได้โดยไม่ไปกระทบข้อมูลอื่น
- เปิดเซสชันที่สอง การเข้าถึงเดิมถูกจัดการตามกลไกที่วางไว้
- สร้างบัญชีใหม่ด้วยอีเมลเดิม ถ้าอนุญาต ข้อมูลส่วนตัวเก่าไม่กลับมาปรากฏ
เพิ่มกรณีเหล่านี้ลงในเช็กลิสต์ทดสอบของ Devoria ถ้าจะส่งให้ผู้ทดสอบ ให้ทำตามคู่มือ TestFlight การที่ไม่มีข้อความ error ใน console ไม่ได้แทนการตรวจข้อมูลและขั้นตอนจริง
เตรียมส่งให้ App Review
ในโน้ตสำหรับรีวิว ให้อธิบายว่าปุ่มลบอยู่ตรงไหนและทดสอบอย่างไร ถ้ามีขั้นตอนที่ต้องพึ่งบริการภายนอก ตรวจให้แน่ใจว่าบริการนั้นใช้งานได้ระหว่างรีวิว อย่าใช้โน้ตเพื่อสัญญาฟีเจอร์ที่ยังไม่มีในบิลด์ที่ส่งไป
หน้าแอปถูก Apple ปฏิเสธ ช่วยให้คุณเรียบเรียงคำตอบเมื่อมีปัญหาถูกแจ้งมาแล้ว และเพื่อเตรียมคำตอบ Apple Review Kit จะช่วยให้คุณหากฎที่ถูกอ้างถึง สิ่งที่กฎนั้นต้องการ พร้อมตัวอย่างการแก้ไขและการตอบกลับ
ถ้าคุณกำลังเตรียมส่งแอปครั้งแรก การวินิจฉัยฟรี จะบอกว่ายังเหลืออะไรต้องทำ และส่งเช็กลิสต์กันโดน Apple ปฏิเสธของผมให้คุณ ซึ่งรวมเรื่องการลบบัญชีไว้ด้วย ถ้า Apple ปฏิเสธแอปของคุณไปแล้ว จองเวลาหนึ่งชั่วโมงกับผม แล้วเรามาอ่านข้อความด้วยกันผ่านวิดีโอคอล
คำถามที่พบบ่อย
แอป iOS ต้องมีฟีเจอร์ลบบัญชีหรือไม่?
ต้องมี ถ้าแอปของคุณให้สร้างบัญชีได้ Apple กำหนดให้ผู้ใช้ต้องเริ่มลบบัญชีได้จากในแอป การปิดใช้งานบัญชีเฉยๆ ไม่ถือว่าทำตามข้อกำหนดนี้ ขั้นตอนต้องหาเจอง่ายและอธิบายผลที่จะตามมา ถ้ามีบางส่วนต้องไปทำต่อบนเว็บ ลิงก์ต้องพาไปที่หน้านั้นโดยตรง
เมื่อผู้ใช้ลบบัญชี ต้องลบอะไรบ้าง?
ทุกอย่างที่เป็นของผู้ใช้ ไม่ใช่แค่ข้อมูลผู้ใช้ ให้ทำรายการ: ข้อมูลล็อกอิน โปรไฟล์และเนื้อหาที่สร้าง ไฟล์ที่จัดเก็บและการอ้างอิงถึงไฟล์ แคชในโทรศัพท์ ข้อมูลในบริการภายนอก จดข้อมูลที่ต้องเก็บไว้ด้วยว่าเพราะข้อบังคับข้อไหน และแจ้งผู้ใช้ ถ้าไม่มีรายการนี้ รูปอาจยังเข้าถึงได้ทั้งที่ข้อมูลผู้ใช้หายไปแล้ว
Apple ยอมรับการลบบัญชีที่ไม่เกิดขึ้นทันทีหรือไม่?
ยอมรับ ถ้าการลบใช้เวลา Apple ยอมรับขั้นตอนแบบล่าช้าได้ โดยต้องแจ้งผู้ใช้และยืนยันเมื่อเสร็จสิ้น แอปต้องไม่ทำให้ผู้ใช้เข้าใจว่าลบเสร็จแล้วทั้งที่เพิ่งบันทึกคำขอไว้ ถ้าล้มเหลว ให้แสดงข้อความที่มีประโยชน์และให้ลองใหม่ได้ โดยไม่อ้างว่าบัญชีถูกลบไปแล้ว
การสมัครสมาชิกจะเป็นอย่างไรเมื่อผู้ใช้ลบบัญชี?
การสมัครสมาชิกผ่าน Apple อาจยังดำเนินต่อหลังลบบัญชี Apple กำหนดให้อธิบายว่าการเรียกเก็บเงินจะเป็นอย่างไรต่อ และให้เข้าถึงหน้าจัดการการสมัครสมาชิกได้ ถ้าคุณใช้ Sign in with Apple ให้เตรียมการเพิกถอนโทเคนอย่างเหมาะสมด้วย ในแผนทดสอบ ให้แยกการหายไปของบัญชี สถานะการเข้าถึงแบบเสียเงิน และการจัดการการสมัครสมาชิกออกจากกัน
ลบผู้ใช้ใน Supabase Auth อย่างเดียวพอหรือไม่?
ไม่พอ การลบผู้ใช้ใน Auth ไม่ได้พิสูจน์ว่าข้อมูลทั้งหมดในโปรดักต์ของคุณถูกจัดการแล้ว ตามเอกสารของ Supabase ผู้ใช้ที่ยังมีออบเจกต์ใน Storage จะลบไม่ได้จนกว่าจะแก้ปัญหานี้ และการลบผู้ใช้ก็ไม่ได้ทำให้ JWT ที่ออกไปแล้วทั้งหมดหมดอายุทันที ให้สร้างขั้นตอนฝั่งเซิร์ฟเวอร์ที่ตรวจสอบตัวตนของผู้ส่งคำขอ
จะทดสอบการลบบัญชีก่อนส่งให้ Apple อย่างไร?
ใช้บัญชีทดสอบและข้อมูลสมมติบนบิลด์ทดสอบ รัน 6 กรณี: ยกเลิก ลบบัญชีที่มีข้อมูลครบ ตัดอินเทอร์เน็ต ลองใหม่หลังล้มเหลวบางส่วน เปิดเซสชันที่สอง และสร้างบัญชีใหม่ด้วยอีเมลเดิมถ้าอนุญาต ตรวจทั้งข้อมูลและขั้นตอน เพราะการไม่มี error ใน console ยังไม่พอ ถ้าจะแจกบิลด์ ให้ทำตามคู่มือ TestFlight