实例介绍
【实例简介】
Linphone是一款始于2001年的开源的IP语音电话(或称SIP电话),它可以让人们在互联网上实现语音、视频和即时信息的自由交流,并可以移植到各大主流平台(Windows/Android/iOS/Win phone 8/10等)上。Linphone使用SIP协议,可以与任何SIP VoIP运营商一起使用,包括我们的免费SIP音频/视频服务。
【实例截图】
【核心代码】
- (void)addDoneButtonRecursivelyInView:(UIView *)subview { | |
for (UIView *child in [subview subviews]) { | |
if ([child isKindOfClass:UITextField.class]) { | |
UITextField *tf = (UITextField *)child; | |
if (tf.keyboardType == UIKeyboardTypePhonePad || tf.keyboardType == UIKeyboardTypeNumberPad) { | |
[tf addDoneButton]; | |
} | |
} | |
[self addDoneButtonRecursivelyInView:child]; | |
} | |
} | |
- (void)viewDidAppear:(BOOL)animated { | |
[super viewDidAppear:animated]; | |
_linkAccountView.hidden = _activateSMSView.userInteractionEnabled = NO; | |
_activateSMSView.hidden = _linkAccountView.userInteractionEnabled = YES; | |
[self fitScrollContentSize]; | |
if (!account_creator) { | |
account_creator = linphone_account_creator_new( | |
LC, | |
[LinphoneManager.instance lpConfigStringForKey:@"xmlrpc_url" inSection:@"assistant" withDefault:@""] | |
.UTF8String); | |
} | |
linphone_account_creator_set_user_data(account_creator, (__bridge void *)(self)); | |
linphone_account_creator_cbs_set_link_account(linphone_account_creator_get_callbacks(account_creator), | |
assistant_link_phone_number_with_account); | |
linphone_account_creator_cbs_set_activate_alias(linphone_account_creator_get_callbacks(account_creator), | |
assistant_activate_phone_number_link); | |
LinphoneProxyConfig *cfg = linphone_core_get_default_proxy_config(LC); | |
if (cfg && | |
strcmp([LinphoneManager.instance lpConfigStringForKey:@"domain_name" | |
inSection:@"app" | |
withDefault:@"sip.linphone.org"] | |
.UTF8String, | |
linphone_proxy_config_get_domain(cfg)) == 0) { | |
linphone_account_creator_set_username( | |
account_creator, linphone_address_get_username(linphone_proxy_config_get_identity_address(cfg))); | |
const LinphoneAuthInfo *info = linphone_proxy_config_find_auth_info(cfg); | |
if (info) { | |
if (linphone_auth_info_get_passwd(info)) | |
linphone_account_creator_set_password(account_creator, linphone_auth_info_get_passwd(info)); | |
else | |
linphone_account_creator_set_ha1(account_creator, linphone_auth_info_get_ha1(info)); | |
} | |
linphone_account_creator_set_domain(account_creator, linphone_proxy_config_get_domain(cfg)); | |
} else { | |
LOGW(@"Default proxy is NOT a sip.linphone.org, aborting"); | |
[PhoneMainView.instance popToView:DialerView.compositeViewDescription]; | |
} | |
CTTelephonyNetworkInfo *networkInfo = [CTTelephonyNetworkInfo new]; | |
CTCarrier *carrier = networkInfo.subscriberCellularProvider; | |
NSDictionary *country = [CountryListView countryWithIso:carrier.isoCountryCode]; | |
if (!country) { | |
// fetch phone locale | |
for (NSString *lang in [NSLocale preferredLanguages]) { | |
NSUInteger idx = [lang rangeOfString:@"-"].location; | |
idx = (idx == NSNotFound) ? idx = 0 : idx 1; | |
if ((country = [CountryListView countryWithIso:[lang substringFromIndex:idx]]) != nil) | |
break; | |
} | |
} | |
if (country && self.firstTime) { | |
[self didSelectCountry:country]; | |
} | |
} |
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论