Ios APNS证书澄清
我正在调试一个已经提交到应用商店的应用程序。应用程序使用推送通知。到现在为止,我已经完成了bug,我将提交这个应用程序的新版本。问题是我没有分发证书,所以我必须创建自己的(通过向证书颁发机构请求证书)才能创建AppStore配置文件。问题是-此版本的应用程序是否支持推送通知?我应该用以前版本使用的APNS证书签名,还是不是强制性的,我可以使用我自己刚刚创建的证书?对于这个版本的应用程序,您必须采用您为第一个版本的应用程序所采取的每一步。遵循以下步骤:- 创建新的Ios APNS证书澄清,ios,ssl-certificate,apple-push-notifications,Ios,Ssl Certificate,Apple Push Notifications,我正在调试一个已经提交到应用商店的应用程序。应用程序使用推送通知。到现在为止,我已经完成了bug,我将提交这个应用程序的新版本。问题是我没有分发证书,所以我必须创建自己的(通过向证书颁发机构请求证书)才能创建AppStore配置文件。问题是-此版本的应用程序是否支持推送通知?我应该用以前版本使用的APNS证书签名,还是不是强制性的,我可以使用我自己刚刚创建的证书?对于这个版本的应用程序,您必须采用您为第一个版本的应用程序所采取的每一步。遵循以下步骤:- 创建新的证书颁发机构、配置文件和SSL,并
证书颁发机构
、配置文件和SSL
,并启用此SSL的推送通知服务
制作一个.PEM
并将其放在服务器上(放置推送通知
服务器文件的位置)
现在使用此新配置文件为您的应用程序签名
简单地说,遵循您为version first所做的所有步骤。希望这对你有帮助 对于此版本的应用程序,您必须采用第一个版本的应用程序所采取的每一个步骤。遵循以下步骤:- 创建新的
证书颁发机构
、配置文件和SSL
,并启用此SSL的推送通知服务
制作一个.PEM
并将其放在服务器上(放置推送通知
服务器文件的位置)
现在使用此新配置文件为您的应用程序签名
简单地说,遵循您为version first所做的所有步骤。希望这对你有帮助
//将设备令牌放在此处(不带空格):
//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);
//将设备令牌放在此处(不带空格):
//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);