记录在升级3.13.9版linphone中的一些问题

2016-09-27  本文已影响147人  FDZero

从老版的linphone需要升级到最新的3.13.9版的linphone,本帖用来记录在升级过程中遇到的一些问题。

3.13.9源码的编译在我之前的一篇文章里面有《最新版本linphone-ios源码的编译》,我老版的linphone为2.几的,因此这次升级改动了不少东西

1.创建帐号失败

提示说no configure for push_notification

通过和linphone源码的对比,发现帐号的创建新增了一个类LinphoneAccountCreator专门进行处理

创建代码如下:

LinphoneAccountCreator*account_creator =linphone_account_creator_new(LC, [LinphoneManager.instancelpConfigStringForKey:@"xmlrpc_url"inSection:@"assistant"withDefault:@""].UTF8String);//创建account对象,后面的三个参数第一个是key我没有做修改,第二个section我参照源码使用当前类的小写类名,第三个跟源码一样为空串

linphone底层是这样实现的

- (NSString*)lpConfigStringForKey:(NSString*)key inSection:(NSString*)section withDefault:(NSString*)defaultValue {

if(!key)

returndefaultValue;

constchar*value =lp_config_get_string(_configDb, [sectionUTF8String], [keyUTF8String],NULL);

returnvalue ? [NSStringstringWithUTF8String:value] : defaultValue;

}

lp_config_get_string,linphone是这样解释这个方法的

/**

* Retrieves a configuration item as a string, given its section, key, and default value.

*

* @ingroup misc

* The default value string is returned if the config item isn't found.

**/

字面意思是说返回一个字符串类型的配置条款,这个方法里面应该是对三个参数进行了组装

linphone_account_creator_set_user_data(account_creator, (__bridgevoid*)(self));

LinphoneAccountCreatorStatususerNameStatus =linphone_account_creator_set_username(account_creator, username.UTF8String);//设置帐号名字,返回一个枚举值

if(userNameStatus !=LinphoneAccountCreatorOK)linphone_account_creator_set_username(account_creator,NULL);

LinphoneAccountCreatorStatuspasswordStatus =linphone_account_creator_set_password(account_creator, password.UTF8String);//设置密码,返回一个枚举值

LinphoneAccountCreatorStatusdomainStatus =linphone_account_creator_set_domain(account_creator, domain.UTF8String);//设置domain,返回一个枚举值

LinphoneAccountCreatorStatustransportStatus =linphone_account_creator_set_transport(account_creator,linphone_transport_parse(transport.lowercaseString.UTF8String));//设置transport,返回一个枚举值

帐号创建成功后,为帐号添加配置

LinphoneProxyConfig* proxyCfg = linphone_account_creator_configure(account_creator);

2、二次接听crash

为了界面美观,我自己重新设计了来电、接听的界面,但是在接听方面出现了问题,在第一次接听成功以后,第二次点击接听按钮就会crash,采用了僵尸对象的提示是我给一个已经dealloc的对象发送了消息,经过仔细的与源码核对,在linphone逻辑处理方面没有任何问题,于是尝试从界面开始找,终于发现了一个小问题

就是在源码中,有定时器的创建repeats值设的是yes,也就是说接听页面不会被release,我尝试在自己的界面添加一个repeats为yes的定时器,方法为一个空的实现,结果竟然可以进行多次接听了,这个问题我一直没搞明白

问题是出在这两行代码中

//设置视频展示的view

linphone_core_set_native_video_window_id([LinphoneManager getLc], (__bridgevoid*)_videoView);

linphone_core_set_native_preview_window_id([LinphoneManager getLc], (__bridgevoid*)_videoPreview);

我把源码定时器的repeats设为no以后,源码在二次接听的时候也会crash,也是报和我一样的问题

这个问题我还不知道到底是什么原因,只能暂时添加一个repeats为yes的定时器,方法空实现

未完待续。。

上一篇下一篇

猜你喜欢

热点阅读