Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios APNS证书澄清_Ios_Ssl Certificate_Apple Push Notifications - Fatal编程技术网

Ios APNS证书澄清

Ios APNS证书澄清,ios,ssl-certificate,apple-push-notifications,Ios,Ssl Certificate,Apple Push Notifications,我正在调试一个已经提交到应用商店的应用程序。应用程序使用推送通知。到现在为止,我已经完成了bug,我将提交这个应用程序的新版本。问题是我没有分发证书,所以我必须创建自己的(通过向证书颁发机构请求证书)才能创建AppStore配置文件。问题是-此版本的应用程序是否支持推送通知?我应该用以前版本使用的APNS证书签名,还是不是强制性的,我可以使用我自己刚刚创建的证书?对于这个版本的应用程序,您必须采用您为第一个版本的应用程序所采取的每一步。遵循以下步骤:- 创建新的证书颁发机构、配置文件和SSL,并

我正在调试一个已经提交到应用商店的应用程序。应用程序使用推送通知。到现在为止,我已经完成了bug,我将提交这个应用程序的新版本。问题是我没有分发证书,所以我必须创建自己的(通过向证书颁发机构请求证书)才能创建AppStore配置文件。问题是-此版本的应用程序是否支持推送通知?我应该用以前版本使用的APNS证书签名,还是不是强制性的,我可以使用我自己刚刚创建的证书?

对于这个版本的应用程序,您必须采用您为第一个版本的应用程序所采取的每一步。遵循以下步骤:-

创建新的
证书颁发机构
、配置文件和
SSL
,并启用此SSL的推送通知服务

制作一个
.PEM
并将其放在服务器上(放置
推送通知
服务器文件的位置)

现在使用此新配置文件为您的应用程序签名


简单地说,遵循您为version first所做的所有步骤。希望这对你有帮助

对于此版本的应用程序,您必须采用第一个版本的应用程序所采取的每一个步骤。遵循以下步骤:-

创建新的
证书颁发机构
、配置文件和
SSL
,并启用此SSL的推送通知服务

制作一个
.PEM
并将其放在服务器上(放置
推送通知
服务器文件的位置)

现在使用此新配置文件为您的应用程序签名

简单地说,遵循您为version first所做的所有步骤。希望这对你有帮助

  • 从keychan access->Certificate Assistant->向证书颁发机构申请证书获取csr文件
  • 在创建分发apns证书时提交csr文件
  • 安装该cer文件并使用keychain access中的export获取p12文件
  • 现在您有了cer和p12文件,现在您可以使用以下命令生成pem文件

    a) openssl x509-在aps_development.cer中-通知der-out PushChatCert.pem

    b) openssl pkcs12-nocerts-out PushChatKey.pem-in Certificates.p12

    c) cat PushChatCert.pem PushChatKey.pem>ck.pem

  • 现在,您可以将带有密码的pem文件(即从上述CMD生成的)发送到服务器

  • php代码也在这里进行测试

    //将设备令牌放在此处(不带空格):
    //itouch用于开发环境的4英寸设备令牌
    $deviceToken='';
    //将您的私钥密码短语放在此处:
    $passphrase='';
    //将您的警告信息放在此处:
    $message='我的第一次推送通知!';
    ////////////////////////////////////////////////////////////////////////////////
    $ctx=stream_context_create();
    stream_context_set_选项($ctx,'ssl','local_cert','ck.pem');
    stream_context_set_选项($ctx,'ssl','passphrase',$passphrase);
    //发展
    //$ios\u url='1ssl://gateway.sandbox.push.apple.com:2195';
    //生产(即分销APN)
    $ios\u url='1ssl://gateway.push.apple.com:2195';
    //打开与APNS服务器的连接
    $fp=流\u套接字\u客户端(
    $ios\u url$err,
    $errstr,60,流式_客户端_连接|流式_客户端_持久,$ctx);
    如果(!$fp)
    退出(“连接失败:$err$errstr.PHP_EOL”);
    echo“已连接到APN”。PHP_EOL;
    //创建有效负载主体
    $body['aps']=数组(
    “警报”=>$message,
    “声音”=>“默认值”
    );
    //将有效负载编码为JSON
    $payload=json_encode($body);
    //构建二进制通知
    $msg=chr(0)。包装('n',32)。包装('H*',$deviceToken)。组件('n',strlen($payload))$有效载荷;
    //将其发送到服务器
    $result=fwrite($fp,$msg,strlen($msg));
    如果(!$result)
    回显“未传递消息”。PHP_EOL;
    其他的
    回显“消息已成功传递”。PHP_EOL;
    //关闭与服务器的连接
    fclose($fp);
    
  • 从keychan access->Certificate Assistant->向证书颁发机构申请证书获取csr文件
  • 在创建分发apns证书时提交csr文件
  • 安装该cer文件并使用keychain access中的export获取p12文件
  • 现在您有了cer和p12文件,现在您可以使用以下命令生成pem文件

    a) openssl x509-在aps_development.cer中-通知der-out PushChatCert.pem

    b) openssl pkcs12-nocerts-out PushChatKey.pem-in Certificates.p12

    c) cat PushChatCert.pem PushChatKey.pem>ck.pem

  • 现在,您可以将带有密码的pem文件(即从上述CMD生成的)发送到服务器

  • php代码也在这里进行测试

    //将设备令牌放在此处(不带空格):
    //itouch用于开发环境的4英寸设备令牌
    $deviceToken='';
    //将您的私钥密码短语放在此处:
    $passphrase='';
    //将您的警告信息放在此处:
    $message='我的第一次推送通知!';
    ////////////////////////////////////////////////////////////////////////////////
    $ctx=stream_context_create();
    stream_context_set_选项($ctx,'ssl','local_cert','ck.pem');
    stream_context_set_选项($ctx,'ssl','passphrase',$passphrase);
    //发展
    //$ios\u url='1ssl://gateway.sandbox.push.apple.com:2195';
    //生产(即分销APN)
    $ios\u url='1ssl://gateway.push.apple.com:2195';
    //打开与APNS服务器的连接
    $fp=流\u套接字\u客户端(
    $ios\u url$err,
    $errstr,60,流式_客户端_连接|流式_客户端_持久,$ctx);
    如果(!$fp)
    退出(“连接失败:$err$errstr.PHP_EOL”);
    echo“已连接到APN”。PHP_EOL;
    //创建有效负载主体
    $body['aps']=数组(
    “警报”=>$message,
    “声音”=>“默认值”
    );
    //将有效负载编码为JSON
    $payload=json_encode($body);
    //构建二进制通知
    $msg=chr(0)。包装('n',32)。包装('H*',$deviceToken)。包装('
    
    // Put your device token here (without spaces):
    //itouch 4 inch device token for development environment
    $deviceToken = '<device_token_without_spaces>';
    
    // Put your private key's passphrase here:
    $passphrase = '<your pass phrase>';
    
    
    // Put your alert message here:
    $message = 'My first push notification!';
    
    ////////////////////////////////////////////////////////////////////////////////
    
    $ctx = stream_context_create();
    
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
    
    stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
    
    //development
    //$ios_url = 'ssl://gateway.sandbox.push.apple.com:2195';
    
    //production(i.e distribution apns)
    $ios_url = 'ssl://gateway.push.apple.com:2195';
    
    
    // Open a connection to the APNS server
    $fp = stream_socket_client(
        $ios_url, $err,
        $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
    
    if (!$fp)
        exit("Failed to connect: $err $errstr" . PHP_EOL);
    
    echo 'Connected to APNS' . PHP_EOL;
    
    // Create the payload body
    $body['aps'] = array(
        'alert' => $message,
        '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 'Message not delivered' . PHP_EOL;
    else
        echo 'Message successfully delivered' . PHP_EOL;
    
    // Close the connection to the server
    fclose($fp);