iOS VOIP实现语音播报、网络电话
。。。。。。。
成都创新互联公司成都网站建设按需开发网站,是成都网站营销推广公司,为铜雕雕塑提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站设计热线:028-86922220
。。。。。。。
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、如果不足和错误的地方,欢迎补充和改正,谢谢。
Ios手机如何让pdf语音播放
1、下载软件。打开iOS手机里的APPstore搜索“轻快PDF阅读器”,找到并下载轻快PDF阅读器APP。
2、使用软件。找到阅读功能,打开文件开始阅读,长按pdf文本iOS手机pdf文件怎么打开,点击文本上方的“朗读”功能即可。以上就是Ios手机让pdf语音播放的方法。
ios开发avfoundation怎么判断已经播放语音播放完成
如果图片都是统一名字不同尾号。你可以使用nstimer来让它自动播放,且通过随机数来选择要播放的图片
iOS 开发的app与音乐播放语音冲突问题
我们常常会在使用app的时候,边听音乐(网易云音乐,qq音乐等)边使用软件,如果我们在app中使用了声音,例如“叮~”的一声 提醒,就会导致音乐的停止播放。而像微信中的语音播放,会在播放完成后音乐恢复播放,这样的体验就很好,那么需要怎么做呢?其实很简单,只需要一句话就可以。
当你的app中的声音播放完毕后,加上这一句话,被打断的音乐便会恢复播放了。
当然还可以设置让app的声音和其他音乐兼容(默认是不兼容的)
withOptions后面的属性是一个枚举,不同的类型会有不同的效果,自己试试吧!
iOS开发 - 语音播报功能的实现
近期项目中有个需求就是要实现类似微信或者支付宝的收款时的语音播报功能,于是笔者就开始了漫长的踩坑之路。
刚开始讨论实现方案时,安卓的小伙伴说可以使用WebSocket + 讯飞语音在线合成实现。于是最初的几天笔者自己也一直在这条路上走了很久,基本功能都已经实现了,项目在前台的时候,基本没问题。但是项目一进入后台大概半分钟的时间,就无法播报了。原因是iOS项目如果不做任何处理的话,在进入后台大概30s之后,程序就会进入类似休眠的状态,然后就不会再进行任何操作了
跟安卓的同事讨论之后,发现安卓有方法可以让程序一直在后台处于活跃状态,于是笔者也开始找寻保持项目后台运行的方法,大概有两种
在这里我们并没有发现,程序在后台收到推送时,作相应处理的方法,哪到底能不能收到推送后就进行处理呢?
iOS 10 之后 iOS推出了Notification Service Extension,我们可以在收到推送之后,通过这个Extension 我们可以有三十秒的时间来对这个推送进行处理
完成之后长这样
然后我们配置一下NotificationService
然后我们看下NotificationService.swift文件
在完成上述操作之后,再次收到推送的话,就会走NotificationService的逻辑了,可以打断点或者Log测试一下
需要注意的是 在推送的内容中 必须配置mutable-content字段,结构大致如下
做完上边的操作之后,我们可以知道什么时候去播报语音了,但是语音又要怎么去播报呢?
笔者这边也是试过几个方案,下边一一说来
笔者刚开始使用讯飞发现不行,然后又测试了系统自带的AVSpeech,发现也不好用,查资料才知道,苹果在近期的版本中,停用的在NotificationService中播放语音的功能,之前的某个版本应该可以这么操作。好吧,此方案Pass
既然不让我播,那我存起来总可以了吧,测试发现讯飞在线生成是可以的,也可以存到本地,但。。。是,UNMutableNotificationContent的sound好像只支持提前添加到项目中的文件,并不支持立即生成之后存到本地,然后再设置的功能。。。
笔者在项目中预先生成的文件如下(语音包通过百度语音开放平台在线生成 百度语音在下生成(拉到中间就有了) )
比如说我要播放“支付宝到账100元”,我就会发放多个通知,依次播放wx-pre,1,bai,yuan这几个语音,连贯起来就能达到要求
笔者能力有限,暂时想到的方法就是这个,有好的方法可以多多分享,沟通
ios开发怎么自动切换听筒和麦克风播放语音
在“我”页面中点击设置然后在出现的页面中点击“通用”在“通用”中找到“使用听筒模式播放语音”,点
本文名称:ios开发语音播放,ios音频播放
本文链接:http://lswzjz.com/article/dsdcoes.html