วิธีส่ง Push notification ผ่าน iOS และ Phonegap ด้วย PHP

จำนวนการเปิดอ่าน 1,008
คะแนนเอกสาร

รู้สึกเนื้อหานี้ น่าจะยาวมาก คงได้จะได้แบ่งเป็น 2-3 ตอนเป็นแน่ แต่ผมจะอธิบายเน้นๆ เลยแล้วกัน

เริ่มการสร้างใบ CSR

ที่อื่นๆ อาจจะเริ่มสอนจากการสร้างโปรเจค สมัครนู่นนี่นั่น แต่เราจะคิดว่า คุณผ่านขั้นตอนพวกนั้นมาแล้วนะครับ เริ่มจากเรื่องนี้ก่อนเลยแล้วกัน ผมลองๆ ดูแล้ว โครตหลายขั้นตอน เลยต้องทำสรุปมาทีละขั้นก่อนเลย

  1. เปิด Keychain Access บน Mac ขึ้นมาก่อน (พิมพ์ใน Spotlight Search เอาก็ได้)

  2. เลือกเมนู Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority.

    imgbox

  3. ใส่ User email (ให้ตรงกับ developer account ของเรา) แล้วก็ common name (ผมใส่ชื่อ App ที่จะสร้าง) ชื่อ CA email ให้ว่างไว้ เพราะเราจะเลือก Saved to disk จากนั้นก็กดปุ่ม Continue ได้เลย

    imgbox

  4. เลือกที่ Save ดีๆ เพราะต้องเอาไปใช้ในขั้นตอนถัดไปนะครับ


ถัดมาการขอใบรับรอง App ID

  1. ขั้นแรก Login เข้า developer.apple.com ให้เรียบร้อย แล้วไปที่เมนู Identifiers > App IDs ดังรูป

    imgbox

  2. คลิ้กปุ่มบวก ที่มุมซ้ายบน

    imgbox

  3. จากนั้นก็ตั้งชื่อ App Name และเลือก Explicit App ID แต่มันจะสำคัญตรง Bundle ID นี่ล่ะ

    imgbox

    มันต้องตั้งให้ตรงกับ app id ของ phonegap ของโปรเจค ของเราที่สร้างเอาไว้ด้วย (ดูในไฟล์ confgi.xml ได้ว่า เราตั้งไว้อย่างไร)

    imgbox

  4. จากนั้นที่หัวข้อ App Service ให้ติดที่ Push Notifications ด้วย

    imgbox

  5. จากนั้นกดปุ่ม Continue เพื่อไปขั้นตอนยืนยันที่จะสร้าง สังเกตว่าตรง Push Notifications จะเป็น Configurable นะครับ

    imgbox

  6. ถ้าเรียบร้อยแล้วก็กดปุ่ม Submit เพื่อบันทึกได้เลย

  7. เมื่อเรียบร้อยแล้วให้กลับมาที่หน้า Identifiers > App IDs อีกครั้ง แล้วเลือก ไอ้ App ที่เราเพิ่งสร้างตะกี้นี้ แล้วกดปุ่ม Edit

    imgbox

  8. เลื่อนไปล่างๆ จนถึงหัวข้อ Push Notifications แล้วกดปุ่ม Create Certificate

    imgbox

  9. กดปุ่มถัดไปเรื่อยๆ จนถึงหน้า ที่ให้ Upload CSR file. ก็ให้กดเลือกไฟล์ จากขั้นอตนที่แล้ว เข้าไป แล้วกดปุ่ม Generate แล้วรอซักพัก ก็จะได้ใบรับรองมาให้ Download ให้กดดาวน์โหลดเก็บไว้ ดีดี นะค่าบบ ต้องเอาไปใช้อีกหลายขั้นตอน

    imgbox

  10. ทำแบบนี้ กับ Production SSL ด้วย (ที่หน้าขั้นตอนที่ 8) แล้วดาวน์โหลดมาแยกชื่อกันใช้ชัดเจนนะครับ


เอาใบรับรองมาแปลธาตุ

  1. เริ่มจาก ไอ้ไฟล์ใบรับรอง 2 ไฟล์ ที่ได้ มาก่อนหน้านี้ ให้นำเอาไปใส่ใน Keychain Access ลากเข้าไปดื้อๆ เลยครับ

    imgbox

  2. จากนั้นคลิ้กขวาที่ใบรับรองที่เพิ่มเข้าไปตะกี้นี้แล้วเลือก Export...

    imgbox

    มันจะให้เซฟเป็นไฟล์ .p12 ตั้งชื่อดีดี นะครับ แยกกันระหว่าง Production กับ Development

  3. ทำแบบเดียวกันกับ Private key ของใบรับรองนั้นด้วย (ไอ้ที่เป็นรูปกุญแจด้านล่างต่อจากใบรับรองแต่ละอัน) สรุปแล้วเราจะได้ ไฟล์ .p12 มา 4 อัน

    imgbox

    (เพียบ...)


สร้างใบรับรองด้วย OpenSSL

  1. เปิด terminal ขึ้นมาครับ แล้วไปที่ folder ที่เก็บพวกใบที่สร้างไว้ก่อนหน้านี้

  2. แล้วใส่คำสั่งสร้างประมาณนี้ครับ

    openssl pkcs12 -clcerts -nokeys -out aps_dev-cert.pem -in aps_dev.p12
    openssl pkcs12 -nocerts -out aps_dev-key.pem -in aps_dev-key.p12
    openssl rsa -in aps_dev-key.pem -out aps_dev-key-noenc.pem
    
    cat aps_dev-cert.pem aps_dev-key-noenc.pem > aps_dev.pem

    คำสั่งที่ 2 ต้องใส่ Password แล้วคำสั่งที่ 3 ต้องใส่ Password ที่ได้จากคำสั่งที่สอง , และทำแบบเดียวกันนี้กับ Production ด้วยนะครับ

  3. ทดสอบใบรับรองที่ได้มาด้วยคำสั่งนี้

    openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert aps_dev-cert.pem -key aps_dev-key.pem
    openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert aps_dev-cert.pem -key aps_dev-key-noenc.pem

    คำสั่งแรก ต้องใส่ Password คำสั่งที่สองไม่ต้องใส่ และเมื่อทดสอบสำเร็จ จะได้ผลลัพธ์ แบบนี้

    imgbox

    เป็นอันจบขั้นตอนครับ ได้ใบรับรองมาไว้ใช้


(เดี๋ยวมาต่อภาค 2)