。。。。。。。
岳阳ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
。。。。。。。
ios voip 推送---案例
java
php
验证.pem
。。。。。。。
注意⚠️ token 在 ahc 打包出来的是不一样的,切记
。1。。。。。。。。。。。。。。
如何生成.pem 证书 ,适用于PHP 。Java是.p12 证书
1、将之前生成的voip.cer SSL证书双击导入钥匙串
2、打开钥匙串访问,在证书中找到对应voip.cer生成的证书,右键导出并选择.p12格式,这里我们命名为voippush.p12,这里导出需要输入密码(随意输入,别忘记了)。
3、目前我们有两个文件,voip.cer SSL证书和voippush.p12私钥,新建文件夹命名为VoIP、并保存两个文件到VoIP文件夹。
4、把.cer的SSL证书转换为.pem文件,打开终端命令行cd到VoIP文件夹、执行以下命令
openssl x509 -in voip.cer -inform der -out VoiPCert.pem
5、把.p12私钥转换成.pem文件,执行以下命令(这里需要输入之前导出设置的密码)
openssl pkcs12 -nocerts -out VoIPKey.pem -in voippush.p12
6、再把生成的两个.pem整合到一个.pem文件中
cat VoiPCert.pem VoIPKey.pem ck.pem
最终生成的ck.pem文件一般就是服务器用来推送的。
但是我惊奇的发现,不管是对于生产pem,还是测试pem,这两个网址都可以进行验证
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert ck.pem
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-ck.pem
验证结果:
。2。。。。。。。。。。
后台使用的接口
开发接口:gateway.sandbox.push.apple.com:2195
发布接口:gateway.push.apple.com:2195
官网提供的是:
开发接口: api.development.push.apple.com:443
发布接口: api.push.apple.com:443
这两个接口都能使用一个是Socket连接的方式,一个是采用Http的方式
。3。。。。。。。。。。。
用终端命令行cd到我们的VoIP文件夹中(有5个证书),输入: php -f 文件名.php;
?php
$deviceToken = 'token'; //能通
//ck.pem密码
$pass ='******';
//消息内容
$message ='收到金额0.12元,来自支付宝扫码支付';
//数字
$badge =1;
$sound ='default';
$body =array();
$body['aps'] =array('alert'= $message);
//把数组数据转换为json数据
$payload = json_encode($body);
echostrlen($payload),"\r\n";
$ctx = stream_context_create([
'ssl'= [
'verify_peer' = false,
'verify_peer_name'= false
// 'cafile' = '/path/to/bundle/entrust_2048_ca.cer',
]
]);
// $pem = dirname(__FILE__) .'/'.'ck.pem';
stream_context_set_option($ctx,'ssl','local_cert','ck.pem');
stream_context_set_option($ctx,'ssl','passphrase', $pass);
// gateway.push.apple.com:2195 -- 正式环境
// gateway.sandbox.push.apple.com:2195 -- 开发环境
$fp = stream_socket_client('tls://gateway.push.apple.com:2195',$err,$errstr,60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if(!$fp) {
print "Failed to connect $err $errstr\n";
return;
}
else{
print "Connection OK\n
";
}
// send message
$msg = chr(0).pack("n",32).pack('H*', str_replace(' ','', $deviceToken)).pack("n",strlen($payload)).$payload;
print "Sending message :" . $payload . "\n";
fwrite($fp, $msg);
fclose($fp);
/*
35 Connection OK
Sending message :{"aps":{"alert":"A test message!"}}
*/
。补充。。。。。。。。。。。。。。
1、当app要上传App Store时,请在iTunes connect上传页面右下角备注中填写你用到VoIP推送的原因,附加上音视频呼叫用到VoIP推送功能的demo演示链接,演示demo必须提供呼出和呼入功能,demo我一般上传到优酷。
2、经过大量测试,VoIP当应用被杀死(双击划掉)并且黑屏大部分情况都能收到推送,很小的情况会收不到推送消息,经测试可能跟手机电量消耗还有信号强弱有关。 再强调一遍,测试稳定性请在生产环境测试。
3、如果不足和错误的地方,欢迎补充和改正,谢谢。
应该是不可以的,目前功能比较强的VP3000可以实现营销功能,但是监听属于不合法的吧,这个正规公司都不会开发的
1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示
NSMutableString* str=[[NSMutableStringalloc]initWithFormat:@"tel:%@",@"186xxxx6979"];// NSLog(@"str======%@",str);[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
2,这种方法,打完电话后还会回到原来的程序,也会弹出提示,推荐这种
NSMutableString* str=[[NSMutableStringalloc]initWithFormat:@"tel:%@",@"186xxxx6979"];UIWebView* callWebview = [[UIWebViewalloc]init];
[callWebviewloadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:str]]];
[self.viewaddSubview:callWebview];
[callWebviewrelease];
[strrelease];
3,这种方法也会回去到原来的程序里(注意这里的telprompt),也会弹出提示
NSMutableString* str=[[NSMutableStringalloc]initWithFormat:@"telprompt://%@",@"186xxxx6979"];// NSLog(@"str======%@",str);
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:str]]
苹果手机可以到苹果应用商店搜索“讯拨智能电话”下载,即可拨打高清网络电话,具有虚拟号码防标记防拉黑功能。