March 27, 2016

เราจะสร้างประสบการณ์การขอสิทธิ์ (permission request) ในการเข้าถึงข้อมูลที่ดีให้แก่ผู้ใช้แอพได้อย่างไร?

อย่างหนึ่งที่จะทำให้ผู้ใช้ (user) รู้สึกหงุดหงิดเวลาใช้แอพของเราก็คือ การถูกถามขอสิทธิ์ (permission) ในการเข้าถึงข้อมูลสำคัญที่เป็นส่วนตัวของเรานั่นเอง ซึ่งสิทธิ์เหล่านี้ก็เช่นการขอเข้าถึง location service, camera, push notification, calendar, contact สาเหตุที่ขอก็เพื่อให้แอพสามารถทำงานได้อย่างเต็มความสามารถนั่นเอง แต่เมื่อไรก็ตามที่ผู้ใช้ไม่ให้สิทธิ์ที่แอพต้องการ แอพก็อาจทำงานได้ไม่เป็นไปตามที่ตั้งใจไว้ได้อย่างเต็มที่ และส่งผลให้แอปมีคุณค่าต่อผู้ใช้น้อยลง และสุดท้าย ผู้ใช้ก็ตัดสินใจลบแอปทิ้งในที่สุด :) 

ทำไมล่ะ? ลบทิ้งทำไม ลบทิ้งทั้งๆ ที่ยังไม่ได้ใช้ฟีเจอร์ที่ตั้งใจทำมาให้ใช้เลยเนี่ยนะ... น่าเศร้าใช่ไหม?

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

การออกแบบหน้าจอการขอสิทธิ์ในการเข้าถึงข้อมูลส่วนตัวจากผู้ใช้นั้น ให้ focus อยู่ที่ 3 เรื่องหลักได้แก่ 1. เวลา, 2. บริบท (context) และ 3. ข้อความที่ใช้ขอสิทธิ์ เอาล่ะ มาดูกันว่าจะใช้ 3 สิ่งนี้ในการขอสิทธิ์ให้สำเร็จได้อย่างไร

March 06, 2016

Swift Lazy: เรามาขี้เกียจกันเถอะ

บทความนี้จะใช้ความขี้เกียจแสดงวิธีการเขียนโค้ดให้ดูดีมีประสิทธิภาพกันมากขึ้น โดยภาพรวมเราจะพูดถึง lazy variable และ lazy sequence

โจทย์
เรากำลังทำแอปที่ต้องแสดงรูป avatar ในขนาดที่ต่างๆ กันไป โดยเราจะมีขนาดหลักอยู่ 1 ขนาด และเมื่อใดก็ตามที่มีการเรียกใช้ avatar ในขนาดอื่น เราถึงจะ resize รูปเพื่อเอาไปใช้อีกที แบบนี้