1、 头文件:官方首先介绍了头文件,大意说如果想使用开源库所提供的接口功能,就要导入iOSNgnStack.h文件,并且只能唯一导入开源库中提供的这个头文件。于是处于好奇我在idoubs.xcodeproj中找寻iOSNgnStack.h文件但是未果,故疑惑为什么导入的文件在工程中找不到呢?随即我发现在idoubs.xcodeproj中还有一个Xcode工程,即ios-ngn-stack.xcodeproj,在其中有诸如Doubango文件夹,文件夹中是一些音频编码文件;在Classes文件夹中我惊喜的发现了iOSNgnstack.h文件。就此,头文件一部分的学习到此为止。
2、 NGN Engine:NGN引擎提供给用户使用上层服务的接口,如:
(1) NgnSipService:一个向服务器注册的SIP/IMS服务
(2) NgnConfigurationService:该服务负责所有与配置有关的任务
(3) NgnStorageService:这是一个用来存储私有数据的公共服务,数据被存储到名为NgnDataBase.db的数据库中
(4) NgnHistoryService:这个服务用来存储和管理呼叫数据,数据同样被存储到NgnDataBase.db中。这个服务用到NgnStorageService来对数据进行读写。
(5) NgnContactService:对本地的通讯录进行包装
(6) NgnHttpService:HTTP客户端服务
(7) NgnNetworkService:声音(振铃音、回铃音、警告音等)、语音、震动等
在iOSNgnStack.h中可以看到NGNEngine的头文件,由此,我们可以在Classes/commom中的各文件夹中找到NGN Engine接口的实现文件。
3、 NGN Engine实例化及启动:官网上给出的实例化语句为NgnEngine *engine = [NgnEngine getInstance];而在程序中是搜不出这条语句的,因为最新版的开源代码已经将实例化语句改为[NgnEngine sharedInstance]。所以对应的启动NGN Engine的代码变为[[NgnEnginesharedInstance] start]。
4、 Configuration Service(配置服务):配置服务(NgnConfigurationService)用来对应用程序束中的用户配置信息进行存储或读取。读取数据的实例语句为:NSString* publicId = [[NgnEngine getInstance].configurationServicegetStringWithKey:IDENTITY_IMPU];其中getStringWithKey后的参数指定具体的操作数据。存储或读取的所有接口方法在INgnConfigurationService.h中进行了声明。
5、 SIP/IMS Service:
(1) SIP注册和事件管理:服务所提供的接口方法声明在INgnSipService.h中给出。根据官网文档,首先利用setStringWithKey方法设置相关配置信息,之后开启注册事件监听onRegistrationEvent监听注册状态的改变,最后利用registerIdentity方法向服务器端注册即可。当然如果不再需要监听注册事件,则需要调用removeObserver方法。
(2) Sending/Receiving IM:和SIP注册相似,首先需要用onMessagingEvent方法开启监听,然后便可以利用相关方法进行IM的发送或接收。同样,在不需要监听时调用removeObserver方法。
6、 Storage Service:NgnStorageService是用来存储私有数据的公共服务,数据被存储到名为NgnDataBase.db的数据库中。服务所提供的接口方法声明在INgnStorageService中。为了当“喜好设置”改变时及时得到通知,可以开启onFavoritesEvent方法监听,同样使用removeObserver方法结束监听。
7、 History Service:用来存储和管理呼叫数据,数据同样被存储到NgnDataBase.db中。这个服务用到NgnStorageService来对数据进行读写。服务所提供的接口方法声明在INgnHistoryService中。为了当“呼叫日志”改变时及时得到通知,可以开启onHistoryEvent方法监听,同样使用removeObserver方法结束监听。