发送推送通知与PHP多个令牌(IOS) [英] Send Push Notification to multiple tokens with PHP (iOS)
本文介绍了发送推送通知与PHP多个令牌(IOS)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我和所有的devicetokens的数据库。我开始拿起从数据库中标记,但我的剧本好好尝试一下再工作了(在推不发送)。
这是我的脚本:
< PHP$ DB_USER =XXX; // Gebruiker VOOR的MySQL
$ DB_PASS =XXX; // Wachtwoord VOOR的MySQL
$ DB_HOST =localhost的; //主机VOOR MySQL的;标准报本地主机
$ db_db =XXX; //数据库//阿尔斯济人ergens安德斯·埃恩数据库connectie hebt gemaakt,
// maak丹凡·德volgende彧regels commentaar(// ervoor zetten排名)
mysql_connect($ DB_HOST,DB_USER $,$ DB_PASS);
mysql_select_db($ db_db);$查询=的mysql_query(SELECT * FROM iospush); 而($行= mysql_fetch_array($查询)){
$ deviceToken = $行[devicetoken];
}如果($ _ POST ['消息']){// $ deviceToken ='XXX'; $消息=的stripslashes($ _ POST ['消息']); $负载='{
APS: {提醒:'$消息。'
徽章:1
}
};
$ SSL ='xx.pem'; $ CTX = stream_context_create();
stream_context_set_option($ CTX,SSL,的local_cert',$ SSL);
stream_context_set_option($ CTX,'SSL','密码','XXX');
$计划生育=在stream_socket_client('SSL://gateway.sandbox.push.apple.com:2195',$犯错,$ errstr,60,STREAM_CLIENT_CONNECT,$ CTX);
如果(!$ FP){
PRINT无法连接$犯错$ errstrn
返回;
}其他{
打印通知发送!
} $ devArray =阵列();
$ devArray [] = $ deviceToken; 的foreach($ devArray为$ deviceToken){
$味精= CHR(0)。包(N,32)。包(H *',str_replace函数('','',$ deviceToken))。包(N的strlen($有效载荷))。 $有效载荷;
打印发送消息。 $有效载荷。 N; FWRITE($ FP,$味精);
}
FCLOSE($ FP);
}?>
<形式的行动=pushios.php方法=后>
<输入类型=文本名称=消息MAXLENGTH =100>
<输入类型=提交值=发送通知>
< /表及GT;
请帮我做这个工作!
谢谢方面!
解决方案
$ deviceToken =阵列();
而($行= mysql_fetch_array($查询)){
$ deviceToken [] = $行[devicetoken];
}
...
//或使用($ devArray = $ deviceToken;)的foreach($ deviceToken为$令牌){
$味精= CHR(0)。包(N,32)。包(H *',str_replace函数('','',$令牌))。包(N的strlen($有效载荷))。 $有效载荷;
I've a database with all the devicetokens. I proceed to pick up the tokens from the database, but my script doens't work then anymore (the pushes don't send).
This is my script:
<?PHP
$db_user = "xxx"; // Gebruiker voor MySQL
$db_pass = "xxx"; // Wachtwoord voor MySQL
$db_host = "localhost"; // Host voor MySQL; standaard localhost
$db_db = "xxx"; // Database
// Als je al ergens anders een database connectie hebt gemaakt,
// maak dan van de volgende twee regels commentaar (# of // ervoor zetten)
mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_db);
$query = mysql_query("SELECT * FROM iospush");
while ($row = mysql_fetch_array($query)) {
$deviceToken = $row["devicetoken"];
}
if($_POST['message']){
// $deviceToken = 'xxx';
$message = stripslashes($_POST['message']);
$payload = '{
"aps" :
{ "alert" : "'.$message.'",
"badge" : 1
}
}';
$ssl='xx.pem';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $ssl);
stream_context_set_option($ctx, 'ssl', 'passphrase', 'xxx');
$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 $errstrn";
return;
} else {
print "Notifications sent!";
}
$devArray = array();
$devArray[] = $deviceToken;
foreach($devArray as $deviceToken){
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack ("n",strlen($payload)) . $payload;
print "sending message :" . $payload . "n";
fwrite($fp, $msg);
}
fclose($fp);
}
?>
<form action="pushios.php" method="post">
<input type="text" name="message" maxlength="100">
<input type="submit" value="Send Notification">
</form>
Please help me to make this working!
Thanks in regard!
解决方案
$deviceToken = ARRAY();
while ($row = mysql_fetch_array($query)) {
$deviceToken[] = $row["devicetoken"];
}
...
// or use ($devArray = $deviceToken;)
foreach($deviceToken as $token){
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $token)) . pack ("n",strlen($payload)) . $payload;
这篇关于发送推送通知与PHP多个令牌(IOS)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文