วิธีส่งข้อความจากบริการเว็บ php ไปยังอุปกรณ์ iOS ที่ระบุ

ฉันมีอุปกรณ์ iOS และบริการเว็บที่เขียนด้วย PHP เมื่ออุปกรณ์ iOS ส่งคำขอไปยังบริการบนเว็บ บริการบนเว็บจะตอบสนองต่ออุปกรณ์ iOS นั้นๆ อย่างแน่นอน ฉันไม่รู้ว่าเซิร์ฟเวอร์จะส่งการตอบสนองต่ออุปกรณ์นั้นได้อย่างไร ขอบคุณสำหรับความช่วยเหลือของคุณ!


person Truong Ho    schedule 03.12.2012    source แหล่งที่มา


คำตอบ (2)


คุณสามารถค้นคว้าเกี่ยวกับแต่ละองค์ประกอบเหล่านี้ได้:

1) แอปส่งคำขอ HTTP POST ไปยังบริการเว็บด้วยวิธีมอบหมายการโทรกลับ (ASIHttpRequest หรือ AFNetworking)

2) เซิร์ฟเวอร์รับคำขอ แยกวิเคราะห์ จากนั้นสร้างการตอบสนอง JSON และส่งคืนกลับไปยังแอปโดยอัตโนมัติ (ใช้กรอบงานเว็บ)

3) ในวิธีการโทรกลับของผู้รับมอบสิทธิ์ของแอป คุณจะแยกวิเคราะห์ข้อมูล JSON เป็น NSDictionary คุณแยกคีย์-ค่า JSON โดยใช้ [yourDictionary valueForKey:@"name"];, [yourDictionary valueForKey:@"age"], [yourDictionary valueForKey:@"gender"], [yourDictionary valueForKey:@"email"] ฯลฯ

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

แก้ไข

เนื่องจากคุณใช้ PHP เป็นภาษาบริการเว็บ ฉันขอแนะนำให้ใช้เฟรมเวิร์กเว็บ Symfony 2

คุณจะเขียนบางอย่างเช่น

// get request
$inputName = $_REQUEST['name'];

// ORM
$em = $this->getDoctrine()->getManager();

// find email based on name
$member = $em->getRepository('MyWebAppWebServiceBundle:Member')->findOneByName($inputName);

...

// construct JSON array
$json = array(
    'id' => $member->getId(),
    'name' => $member->getName(),
    'email' => $member->getEmail()
);

// send the response back to the user as JSON data
$response = new Response(json_encode($json));
$response->headers->set('Content-Type', 'application/json');
return $response;

หรือหากคุณต้องการแอปพลิเคชันที่ปรับขนาดได้ คุณสามารถใช้ Node.js (Javascript ฝั่งเซิร์ฟเวอร์)

person Zhang    schedule 03.12.2012
comment
ขอขอบคุณสำหรับการตอบสนองของคุณ. ฉันได้ทำขั้นตอนที่ 1 และ 3 เสร็จแล้ว ในขั้นตอนที่ 2 ฉันใช้ sendResponse(200, json_encode($result)); เพื่อตอบสนองต่อลูกค้า แต่ฉันสงสัยว่ามันจะตอบสนองต่อลูกค้าที่ส่งคำขอไปหรือไม่ - person Truong Ho; 03.12.2012
comment
ขอบคุณสำหรับรหัสของคุณ คุณใช้ $response = new Response(json_encode($json)); $response->headers-›set('ประเภทเนื้อหา', 'application/json'); ส่งคืน $ ตอบกลับ; แต่ไม่เห็นโค้ดไหนระบุที่อยู่ของเจ้าของสูตรได้มั้ยคะ? - person Truong Ho; 03.12.2012
comment
ทำไมคุณไม่ลองส่งคำขอไปยังเครื่องจำลองของคุณและดูว่าคุณได้รับคำตอบจากโทรศัพท์ของคุณหรือไม่ ฉันไม่คิดว่าคำขอจะถูกส่งแบบสุ่มไปยังบุคคลอื่นเว้นแต่คุณจะบอกให้ทำ - person Zhang; 03.12.2012
comment
ลิงก์นี้อาจตอบคำถามของคุณเกี่ยวกับการแก้ไขเป้าหมายการตอบสนอง stackoverflow.com/questions/4104525/ - person Zhang; 03.12.2012
comment
ใช่ เครื่องจำลองได้รับการตอบกลับจากบริการบนเว็บ แต่ฉันไม่รู้ว่าเครื่องอื่นได้รับข้อความนั้นด้วยหรือไม่ - person Truong Ho; 03.12.2012
comment
เปิดเบราว์เซอร์ของคุณ ส่งคำขอ เครื่องจำลองของคุณไม่ควรได้รับการตอบกลับ นั่นเป็นวิธีหนึ่งที่คุณสามารถทดสอบได้ คุณไม่ควรกังวลเกี่ยวกับสิ่งนี้ แม้ว่าเมื่อพวกเขาสร้างโปรโตคอล HTTP พวกเขาก็คิดเรื่องนี้แล้ว ไม่เช่นนั้น เมื่อคุณทำการค้นหาโดย Google คนทั้งโลกก็จะได้เห็นสิ่งที่คุณค้นหา :P - person Zhang; 03.12.2012

หากเป็นไซต์บนมือถือหรือแอป คุณสามารถใช้ jquery ajax เพื่อสืบค้นบริการเว็บของคุณได้ ซึ่งจะมีการตอบกลับหากมี

person Slimtugo    schedule 03.12.2012
comment
ขอบคุณสำหรับความช่วยเหลือของคุณ แต่ฉันใช้ http post, json เพื่อส่งจากไคลเอนต์ iOS ไปยังบริการเว็บ PHP Jquery หรือ ajax ไม่เกี่ยวข้องกับสถานการณ์นี้ - person Truong Ho; 03.12.2012