我正在开发一个PHP网站+
iPhone应用程序和iPhone应用程序API,具有一个面向学生和医生的消息传递系统,当任何一个人(从网站或iPhone)发送消息时,另一个用户应在其iPhone上获得推送通知。例如,如果学生为老师添加了一个新问题,则老师iPhone
/ iPad上的推送通知将发送给老师,并且当老师回复学生的答案时,学生会收到推送通知。
由于对在网站上注册的师生人数没有限制,我的问题是如何将推送消息发送到注册用户的iPhone?我想在有人回复或添加问题后立即发送推送消息。请向我提供用于发送多个推送消息的PHP代码。我在注册时为每个用户保存设备令牌。
当老师回答问题时,我也要向学生发送邮件,我也想向学生发送推送通知,反之亦然,因此请指定能够管理错误情况的代码。
这是我终于做到的方式
set_time_limit(0);
$root_path = "add your root path here";
require_once($root_path."webroot\cron\library\config.php");
require_once($root_path."Vendor\ApnsPHP\Autoload.php");
global $obj_basic;
// Basic settings
$timezone = new DateTimeZone('America/New_York');
$date = new DateTime();
$date->setTimezone($timezone);
$time = $date->format('H:i:s');
//Get notifications data to send push notifications
$queueQuery = " SELECT `notifications`.*, `messages`.`mes_message`, `messages`.`user_id`, `messages`.`mes_originated_from` FROM `notifications`
INNER JOIN `messages`
ON `notifications`.`message_id` = `messages`.`mes_id`
WHERE `notifications`.`created` <= NOW()";
$queueData = $obj_basic->get_query_data($queueQuery);
if(!empty($queueData)) {
// Put your private key's passphrase here:
$passphrase = 'Push';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'server_certificates_bundle_sandbox.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo '<br>'.date("Y-m-d H:i:s").' Connected to APNS' . PHP_EOL;
foreach($queueData as $val) {
// Put your device token here (without spaces):
$deviceToken = $val['device_token'];
// Create message
// Get senders name
$sql = "SELECT `name` FROM `users` WHERE id =".$val['user_id'];
$name = $obj_basic->get_query_data($sql);
$name = $name[0]['name'];
$message = $name." : ";
// Get total unread messaged for receiver
$query = "SELECT COUNT(*) as count FROM `messages` WHERE mes_parent = 0 AND user_id = ".$val['user_id']." AND mes_readstatus_doc != 0 AND mes_status = 1";
$totalUnread = $obj_basic->get_query_data($query);
$totalUnread = $totalUnread[0]['count'];
$message .= " This is a test message.";
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'badge' => $totalUnread,
'sound' => 'default'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result) {
echo '<br>'.date("Y-m-d H:i:s").' Message not delivered' . PHP_EOL;
} else {
$sqlDelete = "DELETE FROM `notifications` WHERE id = ".$val['id'];
$query_delete = $obj_basic->run_query($sqlDelete,'DELETE');
echo '<br>'.date("Y-m-d H:i:s").' Message successfully delivered' . PHP_EOL;
}
}
// Close the connection to the server
fclose($fp);
echo '<br>'.date("Y-m-d H:i:s").' Connection closed to APNS' . PHP_EOL;
} else {
echo '<br>'.date("Y-m-d H:i:s").' Queue is empty!';
}
我的AWS社交网络停止向我的iOS订阅者发送推送通知,我正在试图了解原因。所以我从零开始,目标是向我的测试设备发送1个通知。 我已经做了以下工作: 在iOSDev Portal上创建新的Apple推送服务类型的新证书,而不是旧的APNsiOS生产,导入到钥匙串,导出证书和私钥,按照AWS SNS APNS说明中的说明将其添加到AWS。 已确认此新APNS证书显示在门户上我的应用ID的“生产SSL证
我需要使用< code>aws-sns-javascript向多个设备发送推送通知。当我创建createPlatformEndpoint时,我可以只添加一个设备令牌,但我需要向多个设备发送通知,如一个数组令牌 创建平台应用程序 创建平台终端节点 向Amazon SNS主题发送消息
如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star
我需要使用< code>aws-sdk-go lib通过设备令牌数组向多个设备发送SNS推送通知。 目前我正在使用以下步骤向SNS发送推送消息: 创建endpoint: 将消息发送到endpoint: 我还没有见过一种方法,只使用一个请求就可以将一个推送消息发送到多个设备。可能吗? 像这个例子来说明:
问题内容: 我想使用Java将“推送通知”消息发送到特定的iPhone设备。 我不知道该怎么做。 我对此进行了谷歌搜索,他们建议使用“ PayLoad”类,但不要从任何jar文件中获取此类。 请有人指导我通过Java将推送通知消息发送到iPhone吗? 问题答案: 使用JavaPNS。例如:
我在我的应用程序中使用Google日历API。 我面临的问题是谷歌没有给我发送推送通知。 我在这里设置我的应用程序https://console.developers.google.com/ 已验证域名:https://console.developers.google.com/apis/credentials/domainverification 观看日历:https://developers.