关于iOS APNS的server provider 一直没有看到关于c++版本的,不过现在的各种第三方APNS已经很成熟了,比如百度的云推送SDK等等,这里简单总结一下如何实现iOS原生的APNS server provider.
第一步,生成证书,如何生成.p12证书这里就不细说了,如果不清楚的请查阅其他文档,或者评论里留言,如果问的多的话我再加上
openssl pkcs12 -clcerts -nokeys -out cert.pem -in Certificate.p12
provide new password if asked.
openssl pkcs12 -nocerts -out key.pem -in Certificate.p12
provide new password if asked.
cat cert.pem key.unencrypted.pem > ck.pem
测试版本要生成developer 证书,发布的要对应的生成发布版本的。
生成.pem证书之后,把pem证书放到你的server provider工程中去。
第二步:server provider实现(c++版本)
要实现server provider, 需要先编译安装openssl, 因为Apple 的APNS是基于openssl实现的。
先来看头文件实现
/*
* Auth The Croods
*/
#pragma once
#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <winsock.h>
#include <openssl/ssl.h>
#include <openssl/rand.h>
#include <openssl/bio.h>
#include <openssl/err.h>
#include <openssl/x509.h>
// certificate
#define CERTFILE "./apns_dev.pem"
#define SSL_CTX_LOAD_VERIFY_LOCATIONS_FAILED -1
#define BIO_DO_CONNECT_FAILED -2
#define SSL_GET_VERIFY_RESULT_FAILED -3
class APNS_Croods
{
private:
SSL_CTX *m_pctx;
SSL