AgoraFpaProxyService
framework 主要包含以下成员。
FpaProxyService
接口类包含以下方法。
+ (FpaProxyService * _Nonnull)sharedFpaProxyService;
获取 FpaProxyService
对象。
FpaProxyService
对象。
- (int)startWithConfig:(FpaProxyServiceConfig * _Nonnull)config;
开启 FPA 服务。
参数 | 说明 |
---|---|
config | FPA 服务配置。详见 FpaProxyServiceConfig 。 |
返回值 | 说明 |
---|---|
0 | 开启服务成功。 |
< 0 | 开启服务失败。详见 FpaError 枚举类。 |
- (int)stop;
关闭 FPA 服务。
无
无
- (int)setupDelegate:(id<FpaProxyServiceDelegate> _Nullable)delegate;
注册 FPA 服务事件监听 delegate。
参数 | 说明 |
---|---|
delegate | FpaProxyServiceDelegate 对象。 |
无
- (int)setOrUpdateHttpProxyChainConfig:(FpaHttpProxyChainConfig *_Nullable)chainConfig;
设置或更新 HTTP 本地代理的加速 IP/域名和对应的 chain ID 映射列表。
参数 | 说明 |
---|---|
chainConfig | 加速 IP/域名和对应的 chain ID 映射列表。详见 FpaHttpProxyChainConfig 。 |
返回值 | 说明 |
---|---|
0 | 调用成功。 |
< 0 | 调用失败。详见 FpaError 枚举类。 |
- (int)setParameters:(NSString * _Nonnull)param;
通过 JSON 配置 SDK 提供技术预览或特别定制功能。
JSON 选项默认不公开。
参数 | 说明 |
---|---|
param | JSON 字符串形式的参数。 |
返回值 | 说明 |
---|---|
0 | 调用成功。 |
< 0 | 调用失败。 |
- (int)httpProxyPort;
获取当前使用的 HTTP 本地代理端口。
无
返回值 | 说明 |
---|---|
> 0 | 当前使用的 HTTP 本地代理端口。 |
<= 0 | 调用失败。详见 FpaError 枚举类。 |
- (int)getTransparentProxyPortWithChainInfo:(FpaChainInfo *_Nonnull)info;
获取当前使用的透明代理端口。
参数 | 说明 |
---|---|
info | 加速通道相关信息。详见 FpaChainInfo 。 |
返回值 | 说明 |
---|---|
> 0 | 当前使用的透明代理端口。 |
<= 0 | 调用失败。详见 FpaError 枚举类。 |
- (FpaProxyServiceDiagnosisInfo* _Nullable)diagnosisInfo;
获取问题诊断用的信息。
无
FpaProxyServiceDiagnosisInfo
对象。
+ (NSString * _Nonnull)getSdkVersion;
获取 SDK 的版本号。
无
SDK 的版本号。
+ (NSString * _Nonnull)getSdkBuildInfo;
获取 SDK 的 build 信息。
无
SDK 的 build 信息。
FpaProxyServiceConfig
类包含以下成员。
__attribute__((visibility("default"))) @interface FpaProxyServiceConfig : NSObject
@property (nonatomic, copy) NSString * _Nonnull appId;
@property (nonatomic, copy) NSString * _Nonnull token;
@property (nonatomic, assign) FpaLogLevel logLevel;
@property (nonatomic, assign) NSInteger fileSize;
@property (nonatomic, copy) NSString * _Nonnull logFilePath;
@end
参数 | 说明 |
---|---|
appId | 声网为 app 开发者签发的 App ID,详见 获取 App ID。 |
token | 在 app 服务器端生成的用于鉴权的 Token。如果你的项目使用 App ID 鉴权,你可以将 token 参数赋值为 App ID 的值,自 1.0.0 起也可以赋值为 null 、"" 或不填该参数;如果你使用 App ID + Token 鉴权,则需要传入你在 App 服务端生成的 Token。 |
logLevel | 日志级别。
|
fileSize | 单个日志文件的大小,单位为 KB。默认值为 1024 KB。如果你将该参数设为 1024 KB,SDK 会最多输出总计 5 MB 的日志文件。如果你将该参数设为小于 1024 KB,设置不生效,单个日志文件最大仍为 1024 KB。 |
logFilePath | 日志文件的完整路径,包括文件名。请确保你指定的目录存在而且可写。你可通过该参数修改日志文件名。 |
FpaHttpProxyChainConfig
接口类包含以下成员。
__attribute__((visibility("default"))) @interface FpaHttpProxyChainConfig : NSObject
@property (nonatomic, strong) NSArray <FpaChainInfo *>* _Nonnull chainArray;
@property (nonatomic, assign) BOOL fallbackWhenNoChainAvailable;
@end
为加速链路添加目标 IP/域名与 chain ID 的映射关系。
参数 | 说明 |
---|---|
chainArray | FpaChainInfo 对象的数组。详见 FpaChainInfo 。 |
fallbackWhenNoChainAvailable | 对于 HTTP 本地代理,SDK 找不到 源站 对应的 chain ID 时是否回退到本地连接。
|
FpaChainInfo
接口类包含以下成员。
+ (FpaChainInfo *_Nonnull)fpaChainInfoWithChainId:(NSInteger)chainId
address:(NSString *_Nonnull)address
port:(NSInteger)port
enableFallback:(BOOL)enableFallback
enableCrypto:(BOOL)enableCrypto
userCas:(NSArray<NSString *> *_Nullable)userCas
verifyHost:(NSString *_Nullable)verifyHost;
获取 FpaChainInfo
对象。
参数 | 说明 |
---|---|
chainId | 加速通道的 chain ID。 |
address | 目标 源站 的 IP 或域名。在链路加密加速模式回退场景下,该参数为你期望回退的域名。 |
port | 目标 源站 的端口。在链路加密加速模式回退场景下,该参数为你期望回退的端口。 |
enableFallback | 对于此加速通道,FPA 加速失败时是否回退到本地连接。
|
enableCrypto | 如果设置了 enableFallback 开启加速失败回退,SDK 是否回退到加密连接模式。
|
userCas | 与目标 IP 或域名进行 SSL 连接所需的一个或多个 CA 根证书。你需要将 .pem 格式的 CA 根证书文件文本内容传入该参数。如果 CA 证书不是 .pem 格式,你需要先转换为 .pem 格式。该参数仅在 enableCrypto 为 true 时生效。获取方式详见获取 CA 根证书。 |
verifyHost | 用于远程校验的主机名。你可以填 nil 忽略主机名校验。该参数仅在 enableCrypto 为 true 时生效。 |
FpaChainInfo
对象。
__attribute__((visibility("default"))) @interface FpaProxyServiceConnectionInfo : NSObject
@property (nonatomic, copy) NSString * _Nullable dstIpOrDomain;
@property (nonatomic, assign) NSInteger dstPort;
@property (nonatomic, assign) NSInteger localPort;
@property (nonatomic, copy) NSString * _Nullable connectionId;
@property (nonatomic, copy) NSString * _Nullable proxyType;
@end
FPA 代理连接的相关信息。包含以下成员参数。
参数 | 说明 |
---|---|
dstIpOrDomain | 目标 源站 的 IP 或域名。 |
dstPort | 目标 源站 的端口。 |
localPort | 本地代理的端口。 |
connectionId | 连接 ID。每个 ID 代表 SDK 通过 FPA 代理与目标 源站 的一次完整连接。 |
proxyType | 代理类型。
|
FpaProxyServiceDiagnosisInfo
接口类包含以下参数。
__attribute__((visibility("default"))) @interface FpaProxyServiceDiagnosisInfo : NSObject
@property (nonatomic, copy) NSString * _Nonnull installId;
@property (nonatomic, copy) NSString * _Nonnull instanceId;
@end
参数 | 说明 |
---|---|
installId | 与运行集成 SDK 的 app 的设备唯一对应的 ID。如果你清除了 app 缓存数据,installId 会更新。声网建议你在本地或自己的数据中心留存 installid。在你联系声网技术支持时,可以提供此 installid,方便声网技术支持准确查询日志。 |
instanceId | 与当前 FpaProxyService 实例唯一对应的 ID。 |
FpaProxyServiceDelegate
协议包含以下回调。
- (void)onConnected:(FpaProxyServiceConnectionInfo * _Nonnull)connectionInfo;
在成功连接 FPA 代理时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
- (void)onAccelerationSuccess:(FpaProxyServiceConnectionInfo * _Nonnull)connectionInfo;
在 FPA 代理加速成功时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
- (void)onConnectionFailed:(FpaProxyServiceConnectionInfo * _Nonnull)connectionInfo reason:(FpaFailedReason)reason;
在连接 FPA 代理失败且连接未回退时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FpaFailedReason 枚举类。 |
- (void)onDisconnectedAndFallback:(FpaProxyServiceConnectionInfo * _Nonnull)connectionInfo reason:(FpaFailedReason)reason;
在连接 FPA 代理失败且回退至本地连接时触发。
参数 | 说明 |
---|---|
info | FPA 代理连接信息,详见 FpaProxyConnectionInfo 对象。 |
reason | 失败原因。详见 FpaFailedReason 枚举类。 |
SDK 返回的同步错误码。
参数 | 说明 |
---|---|
FpaErrorNone |
0:没有错误。 |
FpaErrorInvalidArgument |
-1:参数无效。请检查你是否使用了正确的参数。 |
FpaServiceErrorNoMemory |
-2:无法为对象分配内存。 |
FpaServiceErrorNotInitialized |
-3:FPA 服务没有初始化。请确保你成功进行了初始化。 |
FpaServiceErrorCoreInitializeFailed |
-4:FPA 服务初始化失败。 |
FpaErrorUnableBindSocketPort |
-5:无法绑定 SDK 内部的 socket 端口。 |
SDK 回调返回的失败原因。
参数 | 说明 |
---|---|
FpaFailedReasonDnsQuery |
-101:DNS 解析错误。 |
FpaFailedReasonSocketCreateFailed |
-102:SDK 内部创建 socket 失败。 |
FpaFailedReasonSocketConnect |
-103:SDK 内部连接 socket 失败。 |
FpaFailedReasonConnectTimeout |
-104:连接远端服务器超时。 |
FpaFailedReasonNoChainIdMatch |
-105:找不到 chain ID。请检查是否设置了正确的 chain ID。 |
FpaFailedReasonDataRead |
-106:读取数据失败。 |
FpaFailedReasonDataWrite |
-107:写入数据失败。 |
FpaFailedReasonTooFrequently |
-108:每秒并发连接数超出 100 条的限制。 |
FpaFailedReasonTooManyConnections |
-109:当前存在的活跃连接数超出 1000 条的限制。 |
输出的日志级别。
参数 | 说明 |
---|---|
FpaLogLevelNoLogOutput |
0:没有日志。 |
FpaLogLevelInfo |
1:Information 级别。 |
FpaLogLevelWarning |
2:Warning 级别。 |
FpaLogLevelError |
4:Error 级别。 |
FpaLogLevelFatal |
8:Fatal 级别。 |