วิธีส่งค่า Parameter ให้กับ IOS Application (จากภายนอก)

การทำ Application ในหลายๆครั้งจะมีการ โปรโมท (promote) หรือแคปเปน (campaign) หรือ บูท ฯลฯ ศัพท์ต่างๆทางด้าน Marketing แล้วต้องการเก็บค่าเพื่อมาวิเคราะห์ได้ว่ามาจากที่ไหน หรืออาจอยากให้อำนวยความสะดวกถ้า Login จาก เวปแล้วกดิเข้า Application ได้เลยไม่ต้อง Login ใหม่

ซึ่งทำให้เราจำเป็นจะต้องมีการส่ง ค่า (parameter) บางอย่างเพิ่อให้ Application นำไปอ้างอิงรู้ว่าเป็นรหัสอะไร ใน IOS มีขั้นตอนการทำดังนี้


1. สร้างตัวอ้างอิงสำหรับ รับค่าจากภายนอก โดยสร้างที่ไฟล์ info.plist

– URL Schemes ใช้สำหรับอ้างอิง Protocol เรียก Application ของเรา ยกตัวอย่างในภาพ ผมใช้ uptoyou เวลาทำ Links จากภายนอก ก็ให้ใช้เป็น uptoyou://?{parameter}
– URL identifier เพื่อใช้อ้างอิงหากมีหลายๆแหล่งที่เปิดร้บ


2. เพิ่ม Code สำหรับนำค่าไปใช้ ให้เพิ่มที่ appdelegate.swift

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

       let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false)
      let items = (urlComponents?.queryItems)! as [NSURLQueryItem]
       print(urlComponents)
      print(items)
}

 


3. ทำ Links สำหรับคลิกจากภายนอกเข้า จากตัวอย่างข้างบนจะเป็น

<html>
      <body>
             <a href=”uptoyou://?parameter=123″>open application</a>
       </body>
</html>

ผลที่ได้

เท่านี้เราก็สามารถนำค่าต่างๆไปใช้ใน Application ได้แล้ว
การส่งค่าเข้า Application นั่นไม่ยาก เพียงแต่ต้องเข้าใจโครงสร้างหรือวิธีเขียนเท่านั่น

แต่ในความสะดวกสบาย ก็ต้องแลกมากับความปลอดภัยที่น้อยลง ด้วยวิธีการส่งค่า ผ่าน Parameter ก็มีข้อเสียตรงที่คนที่มีลิ้งนี้จะสามารถเห็น Parameter ที่ต่อท้าย URL ทำไห้สามารถลองเปลี่ยนค่าเล่นได้ ถ้าให้แนะนำควรเป็น Parameter ที่ ไม่สำคัญนักใช้สำหรับอ้างอิงเท่านั่น หรือควรมีฟังชั่นไว้ตรวจสอบก่อนนำไปใช้

Referent : The Complete Tutorial on iOS/iPhone Custom URL Schemes