A. 如何用 php代碼實現 ios 等多台設備的推送信息功能
你是說的是手機的那種彈出推送嗎?現在一般都用極光推送,對接好之後,兩個平台都可以支持的很好,我是個程序員,沒有打廣告的意思。
B. php ios 推送 可以使用curl嗎
<?php
02//
03ini_set('display_errors','on');
04error_reporting(E_ALL);
05
06
07//Apnsconfig
08
09//true-useapnsinproctionmode
10//false-useapnsindevmode
11define("PRODUCTION_MODE",false);
12
13$serverId=1;
14$serverName='my-server-domain.com';
15
16if(PRODUCTION_MODE){
17$apnsHost='gateway.sandbox.push.apple.com';
18}else{
19$apnsHost='gateway.push.apple.com';
20}
21
22$apnsPort=2195;
23if(PRODUCTION_MODE){
24//
25$apnsCert=$_SERVER['DOCUMENT_ROOT'].'/apns/apns-dominos-development.pem';
26}else{
27//Useaproctionpushcertificate
28$apnsCert=$_SERVER['DOCUMENT_ROOT'].'/apns/apns-dominos-proction.pem';
29}
30
31
32//---Sendingpushnotification---
33
34//Insertyourdevicetokenhere
35$device_token="<>";//SomeDeviceToken
36
37
38//Notificationcontent
39
40$payload=array();
41
42//Basicmessage
43$payload['aps']=array(
44'alert'=>'testing1,2,3..',
45'badge'=>1,
46'sound'=>'default',
47);
48$payload['server']=array(
49'serverId'=>$serverId,
50'name'=>$serverName
51);
52//
53$payload['data']=array(
54'foo'=>"bar"
55);
56$payload=json_encode($payload);
57
58$streamContext=stream_context_create();
59stream_context_set_option($streamContext,'ssl','local_cert',$apnsCert);
60stream_context_set_option($streamContext,'ssl','passphrase',"");
61
62
63$apns=stream_socket_client('ssl://'.$apnsHost.':'.$apnsPort,$error,$errorString,2,STREAM_CLIENT_CONNECT,$streamContext);
64
65
66$deviceToken=str_replace("","",substr($device_token,1,-1));
67echo$deviceToken;
68$apnsMessage=chr(0).chr(0).chr(32).pack('H*',str_replace('','',$deviceToken)).chr(0).chr(mb_strlen($payload)).$payload;
69fwrite($apns,$apnsMessage);
70
71
72//socket_close($apns);
73fclose($apns);
74
75?>
C. php使用JPush極光推送ios android自定義消息
看官方demo啊
D. 如何透過 PHP 發送 Apple Notification Push
在 PHP 的實作上透過 stream_context_create() 函式建立 SSL 連線,再利用 pack() 函式實作上述的規格來傳送 Bytes 資料 (Payload),以下是 PHP 最精簡的發送訊息程式碼,執行後可以順利與 APNS 溝通與發送訊息。各位可以依據需求修改程式來發送 Enhanced 或 Simple 訊息,或者切換 Sandbox 或 Proction 環境。程式範例如下:
<?php
// Proction mode
$certificateFile = 'apns-dis.pem';
$pushServer = 'ssl://gateway.push.apple.com:2195';
$feedbackServer = 'ssl://feedback.push.apple.com:2196';
// Sandbox mode
$certificateFile = 'apns-dev.pem';
$pushServer = 'ssl://gateway.sandbox.push.apple.com:2195';
$feedbackServer = 'ssl://feedback.sandbox.push.apple.com:2196';
// push notification
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $certificateFile);
$fp = stream_socket_client(
$pushServer,
$error,
$errorStr,
100,
STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT,
$streamContext
);
// make payload
$payloadObject = array(
'aps' => array(
'alert' => 'Server Time:'.date('Y-m-d H:i:s'),
'sound' => 'default',
'badge' => 3
),
'custom_key' => 'custom_value'
);
$payload = json_encode($payloadObject);
$deviceToken = '';
$expire = time() + 3600;
$id = time();
if ($expire) {
// Enhanced mode
$binary= pack('CNNnH*n', 1, $id, $expire, 32, $deviceToken, strlen($payload)).$payload;
} else {
// Simple mode
$binary= pack('CnH*n', 0, 32, $deviceToken, strlen($payload)).$payload;
}
$result = fwrite($fp, $binary);
fclose($fp);
?>
E. php 給iOS推送信息 提示推送成功手機卻收不到消息
信息量太少,收不到消息的原因,我隨口能說出來一百種可能,你有沒有參與調試?
push消息連接是否暢通?別的數據是否可以正常還是專有數據無法接收?
是否網路不暢造成的?等等,需要技術人員去調試才能得到更進一步的解決方法
你這問題問成個表面原因了,這是該用戶提出來的原因,而非出自技術人員之口。
F. ios 推送是建立在 蘋果推送伺服器嗎
方法/步驟
在developer.apple.com的member center設置AppId屬性,
enable push.
在developer.apple.com的member center創建APN證書,
Development -> Apple Push Notification service SSL (Sandbox) 用於沙盒app
Proction -> Apple Push Notification service SSL 用於AppStore app
創建完畢後,可以第一步AppId的屬性列表中查看到證書名稱
基於第1步修改的AppID重新生成provision file,
在iOS Project中載入此provision file,
這樣編譯出的app才可以獲取到device token(推送唯一標識符)
以下為針對服務端的推送設置步驟--------
在keychain中找到第1步創建的APN證書,
展開此證書,分別導出證書和密鑰,
名稱設為cer.p12和key.p12
打開控制台程序,
使用openssl 將cer.p12及key.p12轉成cer.pem和key.pem
命令如下:
$ openssl pkcs12 -clcerts -nokeys -out cer.pem -in cer.p12
$ openssl pkcs12 -nocerts -out key.pem -in key.p12
測試生成的cer.pem及key.pem是否可用
$ openssl s_client -connect gateway.push.apple.com:2195 -cert cer.pem -key key.pem
註:gateway.push.apple.com:2195用於appStore app;
gateway.sandbox.push.apple.com:2195用於沙盒app;
以上命令執行後會列印一大羅信息,最後處於可輸入狀態,打幾個字元回車後自動斷開連接即為正常。
合並cer.pem及key.pem
$ cat cer.pem key.pem > ck.pem
上傳ck.pem到推送伺服器的推送程序的目錄。
Tip:-----------------------
find / -name "*.php"
查詢推送伺服器php文件目錄用。
scp ~/Desktop/ck.pem [email protected]:/var/www/html
用於上傳本地文件到Linux伺服器用。
9
伺服器php代碼載入ck.pem向蘋果伺服器推送消息:略
客戶端oc代碼獲取token,接收推送消息:略