当前位置: 首页 > 知识库问答 >
问题:

如何使用PHP向swft应用发送推送通知[Swift, Php]

鱼旺
2023-03-14

我正在尝试使用在Internet上找到的php脚本向iOS应用程序发送通知。我应该为$passphrase赋予什么价值,在哪里可以找到它?以下各项的值也相同:

  • stream_context_set_选项($ctx,'ssl','local_cert','ck.pem')

class PushNotifications {
    private static $passphrase = 'joashp';

    public function __construct() {
        exit('Init function is not allowed');
    }

    public static function iOS($data, $devicetoken) {

        $deviceToken = $devicetoken;
        $ctx = stream_context_create();
        // ck.pem is your certificate file
        stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
        stream_context_set_option($ctx, 'ssl', 'passphrase', self::$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);
        // Create the payload body
        $body['aps'] = array(
            'alert' => array(
                'title' => $data['mtitle'],
                'body' => $data['mdesc'],
            ),
            '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));

        // Close the connection to the server
        fclose($fp);
        if (!$result)
            return 'Message not delivered' . PHP_EOL;
        else
            return 'Message successfully delivered' . PHP_EOL;
    }

    // Curl
    private function useCurl(&$model, $url, $headers, $fields = null) {
        // Open connection
        $ch = curl_init();
        if ($url) {
            // Set the url, number of POST vars, POST data
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            // Disabling SSL Certificate support temporarly
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            if ($fields) {
                curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
            }

            // Execute post
            $result = curl_exec($ch);
            if ($result === FALSE) {
                die('Curl failed: ' . curl_error($ch));
            }

            // Close connection
            curl_close($ch);

            return $result;
        }
    }

}
$msg_payload = array (
    'mtitle' => 'Test push notification title',
    'mdesc' => 'Test push notification body',
);

$deviceToken = 'FE66489F304DC75B8D6E8200DFF8A456E8DAEACEC428B427E9518741C92C6660';
PushNotifications::iOS($msg_payload, $deviceToken);

共有1个答案

上官琦
2023-03-14

$Passsphrase是证书文件ck.pem文件的密码。你应该问那个生成pem文件的人一个密码。

在许多情况下,密码短语可以是空的。在这种情况下,您可能需要提供一个空字符串。

如果您不知道pem文件是什么,那么您可以阅读一些指南,例如。https://developers.connectycube.com/ios/how-to-create-apns-certificate

本指南告诉您如何生成可用于发送Apple推送通知的p12证书文件。然后,您可以使用以下命令从该p12获取pem文件:https://gist.github.com/shahdhiren/9ca059ac0762f7ef0fcf71a79ed5b022

 类似资料:
  • 问题内容: 我已经在项目中实现了推送通知,到目前为止一切正常。我尝试过通过Pusher发送通知,但效果很好。但是我必须通过PHP发送它们,但尚无法使用。我发现了许多有关如何实现此目标的旧解释,但似乎没有一个对我有用。 这就是我要使用的方法: 问题答案: 尝试使用此php脚本,确保.pem证书在运行时以与该php脚本相同的路径退出,并获得正确的设备令牌

  • 如何使用Firebase向我的应用程序的所有注册用户发送推送通知?我在纪录片中搜索了api,但没有找到任何有用的东西。

  • 问题内容: 我一直在构建一个简单的应用程序来学习angular.js。到目前为止,我已经将MEAN堆栈中的所有内容连接在一起,并且能够从Mongo中保存和检索数据。 该应用程序本质上是一个待办事项列表。用户可以创建一个项目,并在项目内部创建带有“待办事项”的“卡片”,然后可以从一个州转移到另一个州(“积压”,“进行中”,“完成”等)。 我希望能够将通知推送给所有已连接的人员,以告知其应用程序需要刷

  • 我正在尝试从远程服务器向应用程序进行非常简单的推送。 我已根据[1]在Azure上设置了通知中心,但我无法获取设备的调试消息。我不想使用移动服务从DB表读/写 我在Swift中这样做,但我在互联网上没有发现任何真正从服务器接收推送的是iOS Swift作为完整的教程。 例如,我不知道如何在swift中编写以下代码: 到目前为止,这是我在AppDelegate中的代码(我从[2]中获得的一些代码):

  • 问题内容: 我正在开发一个PHP网站+ iPhone应用程序和iPhone应用程序API,具有一个面向学生和医生的消息传递系统,当任何一个人(从网站或iPhone)发送消息时,另一个用户应在其iPhone上获得推送通知。例如,如果学生为老师添加了一个新问题,则老师iPhone / iPad上的推送通知将发送给老师,并且当老师回复学生的答案时,学生会收到推送通知。 由于对在网站上注册的师生人数没有限