मैं उन सभी उपकरणों को एक ही संदेश भेजना चाहता हूं जो आवेदन के साथ पंजीकृत हैं लेकिन एकाधिक कनेक्शन किए बिना उन्हें कैसे भेज सकते हैं ...

मेरा वर्तमान PHP कोड:

ctx = stream_context_create();  
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');  
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);  
if (!$fp)
{
  print "Failed to connect $err $errstr\n";
  return;
}
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
fwrite($fp, $msg);
4
Prabh 19 फरवरी 2011, 13:56
क्या आप प्रत्येक कोड लाइन से पहले 4 व्हाइटस्पेस डालकर अपने कोड को थोड़ा बेहतर स्वरूपित कर सकते हैं? अभी यह पढ़ने योग्य नहीं है।
 – 
Darin Dimitrov
19 फरवरी 2011, 13:58
मुझे आशा है कि यह अब पठनीय है... :)
 – 
Prabh
19 फरवरी 2011, 14:17
-- क्या आप मुझे अंतिम कोड दिखा सकते हैं कि आपने इस समस्या को कैसे हल किया? मैं वही हासिल करने की कोशिश कर रहा हूँ - धन्यवाद!
 – 
tamak
9 मार्च 2015, 16:43
हाय तमक, यह बहुत पहले था इसलिए मेरे पास कोड नहीं है लेकिन मैंने सभी उपकरणों पर संदेश भेजने के लिए उस समय लूप के लिए उपयोग किया था :(
 – 
Prabh
12 मार्च 2015, 03:59

2 जवाब

सबसे बढ़िया उत्तर

निचली पंक्ति, आप नहीं कर सकते हैं। आपको प्रत्येक टोकन पर एक संदेश भेजने की आवश्यकता है।

यह एक ईमेल की तरह नहीं काम कर रहा है, जहां आपके कई प्राप्तकर्ता हो सकते हैं।

एक बार कनेक्शन खुलने के बाद आप संदेशों का एक समूह भेज सकते हैं, यह भी पसंदीदा तरीका है (Apples SDK पर आधारित)।

एसडीके से:

http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW2

आपको कई सूचनाओं में एपीएन के साथ कनेक्शन भी बनाए रखना चाहिए। एपीएन उन कनेक्शनों पर विचार कर सकते हैं जो तेजी से और बार-बार स्थापित होते हैं और सेवा से इनकार करने वाले हमले के रूप में टूट जाते हैं। त्रुटि होने पर, एपीएन उस कनेक्शन को बंद कर देता है जिस पर त्रुटि हुई थी।

10
Roger 15 नवम्बर 2012, 13:23
यहां PHP के लिए नया, क्या इसका मतलब यह है कि आप एक बार अपना कनेक्शन बना लेते हैं जैसे $fp =stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx) ; जबकि आप fwrite($fp, $msg); कई बार (यहां तक ​​कि 1000 बार) कर सकते हैं?
 – 
Darpan
21 अगस्त 2016, 10:52
लिंक ख़राब है
 – 
Darpan
15 अक्टूबर 2016, 01:58

आप एकाधिक संदेश भेजने के लिए एक कनेक्शन का उपयोग कर सकते हैं, इसलिए आपको एकाधिक कनेक्शन खोलने की आवश्यकता नहीं है। आप एकाधिक उपकरणों के लिए एक संदेश का उपयोग नहीं कर सकते।

3
Kevin Renskers 19 फरवरी 2011, 20:38
बोल्होएड, क्या आप मुझे बता सकते हैं कि कैसे?
 – 
Prabh
22 फरवरी 2011, 12:58
1
बस एक ही कनेक्शन पर एकाधिक fwrite करें।
 – 
Kevin Renskers
23 फरवरी 2011, 21:41
हाय @mixedCase एकाधिक fwrites कर रहा है (यानी 100+) मेरे लिए काम नहीं करता है, उनमें से कई को मेरा धक्का नहीं मिला, क्या यह संभव है? क्या मुझे कुछ और करना चाहिए यदि उपयोगकर्ता पुश भेजने के लिए 1000+ हैं?
 – 
Darpan
21 अगस्त 2016, 10:54
एकाधिक लेखन काम करता है लेकिन यदि उपकरणों में से एक गलत है, तो सेब कोई अन्य कनेक्शन नहीं भेजेगा, इससे कैसे निपटें? ... और यह कनेक्शन को समाप्त नहीं करता है, इसलिए आप नहीं जानते कि कौन सा गलत है
 – 
Srneczek
26 नवम्बर 2016, 14:46