美文网首页
记录在升级3.13.9版linphone中的一些问题

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

作者: FDZero | 来源:发表于2016-09-27 15:38 被阅读147次

    从老版的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的定时器,方法空实现

    未完待续。。

    相关文章

      网友评论

          本文标题:记录在升级3.13.9版linphone中的一些问题

          本文链接:https://www.haomeiwen.com/subject/jgmgjttx.html