New way to deal with 'Forgot your password'

จากงาน WWDC ปีนี้ 1 Feature บน iOS 9 ที่น่าสนใจและถูกใจใครหลายๆ คนมาก คือ Univeral Links บน iOS 9 SDK อธิบายง่ายๆ มันคือ Feature ที่ทำให้เราสามารถเปิดแอปของเราผ่าน URL ปกติที่เราใช้ทั่วไปได้นั่นเอง (HTTP, HTTPS Protocol) เช่น ถ้าคุณกดเข้าไปที่ https://twitter.com/imacbaszii แทนที่มันจะเปิด Safari ให้แต่มันกลับเปิด Twitter ในเครื่องให้เลย นั่นล่ะครับ Universal Links


สำหรับเรื่องความปลอดภัย คุณจะต้องทำการโยนไฟล์ JSON ตามรูปแบบที่ Apple กำหนดไปใน Server ซึ่งจะมี App ID ประกอบอยู่ด้วย เพื่อตรวจสอบว่า URL นั้นเป็นของบริการของคุณจริงๆ ตัวอย่างเช่น Tweetbot (Twitter Client ชื่อดัง) จะไม่สามารถกระทำการใดๆ กับ link จาก twitter.com ได้ นอกเสียจากว่า Twitter จะอนุญาติและใส่ App ID ให้ Tweetbot บน Server ของตัวเอง

สำหรับ 3rd Party App ก็อาจจะรู้สึกรำคาญใจกับการจัดการตรงนี้สักหน่อย ไม่มีทางที่ Twitter จะทำแบบนั้นให้ Tweetbot เด็ดขาด แต่ทั้งนี้ทั้งนั้นก็เป็นเรื่องของความปลอดภัย

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

คราวนี้ตัวอย่างของการใช้ Universal Links ที่น่าสนใจที่ผมจะยกตัวอย่างก็คือ

"Password Reset Workflow"

ซึ่งเมื่อก่อนเราอาจจะต้องทำตามขั้นตอนดังนี้

  • คุณลืม Password และกดปุ่ม "Forgot your password" ใน iOS App
  • คุณอาจจะพบหน้าจอให้ใส่ Email และกด Next
  • เช็คอีเมล์ และกด Link ที่จะทำการ Reset Password ให้คุณ
  • ซึ่ง Link นั้นจะเปิด Safari ไปเว็บของบริการนั้นๆ
  • จากนั้นใส่ Password ใหม่และ Save
  • เข้า App ใหม่และเข้าสู่ระบบด้วย Password ใหม่ที่พึ่งเปลี่ยน
ค่อนข้างวุ่นวายใช่ไหมครับ ? แต่ถ้าเราแก้ปัญหานี้ด้วย Universal Links เราสามารถที่จะนำ Process ของการเปิด ​Safari ทิ้งไปได้ทั้งหมด และทำทุกอย่างบน iOS App ของคุณเอง และถ้าจะให้ดียิ่งขึ้น คุณสามารถที่จะสั่ง Login อัตโนมัติหลังจากที่เปลี่ยน Password ได้เลยด้วย จะเหลือเพียงการยืนยัน Email เพียงขั้นตอนเดียว ที่ยังคงต้องมีอยู่เพื่อการยืนยันตัวบุคคล

นี่เป็นวีดีโอตัวอย่างเมื่อทำเรียบร้อยแล้วครับ



คราวนี้มาดูวิธีการทำกัน ก่อนอื่นใครอยากรู้รายละเอียดเกี่ยวกับ Universal Links สามาถรหาอ่านได้ที่

เริ่มจากอย่างที่ผมบอกคุณต้องโยนไฟล์ JSON ที่จะบอกว่า link นี้เป็น Service ของคุณเองเข้าไปใน Server ซะก่อน ซึ่ง format ของไฟล์ก็ประมาณนี้


Wait for the Code ....

จากนั้นใน iOS App ผมได้ใช้ตัวช่วยอย่าง JTRoutes เพื่อจัดการ URL ให้ (แต่สามารถทำเองก็ได้นะ ไม่จำเป็นต้องใช้ Library ก็ได้) ซึ่งจะทำการลงทะเบียน URL ที่ต้องการใน AppDelegate ในจังหวะที่ App ถูกรัน (-applicationDidFinishLaunching นั่นเอง)


Wait for the Code ....

และสุดท้าย ก็ทำการเขียน Delegate method ตัวหนึ่งใน AppDelegate เพื่อทำงานกับ Universal Links


Wait for the Code ....

จากนั้นก็จะพบว่ามันทำงานได้อย่างที่เราต้องการ
Universal Links มันเจ๋งมากเลยนะ เมื่อก่อนเราต้องสร้าง URL Scheme ขึ้นมาเอง (เช่น plannet:// ) เพื่อเปิด App ของเราเอง ขึ้นจะไม่สามารถใช้งานได้เลย ถ้า User ของเราไม่ได้ลง App ของเราอยู่ แต่เมื่อเราทำแบบนี้ User ก็ยังสามารถ Reset Password ได้ แม้ว่าเขาจะทำผ่าน Desktop Computer เนื่องจากมันเป็น URL ธรรมดานั่นเอง

ตัวอย่างอีกอย่างหนึ่งที่น่าสนใจคือ "การยืนยันอีเมล์หลังจากสมัครสมาชิก" นะครับ
ลองเอากลับไปทำกันเองดู :)

Popular posts from this blog

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น