本文包括 FPA SDK 的发版说明。
该版本于 2022 年 9 月 5 日发布。
修复了一些 SDK 的问题。
该版本于 2022 年 8 月 18 日发布。
回退链路加密
自该版本起,SDK 侧新增了回退链路加密的功能,可以保证你的加速链路在回退后持续处于加密状态。你只需要在 FpaChainInfo
类中设置 enableCrypto
参数为 true,并正确配置 userCas
及 verifyHost
参数,即可实现回退链路加密功能。
声网推荐在使用服务端 SSL 连接优化方案时配合使用回退链路加密功能。
优化了日志上传功能。
FpaChainInfo
类新增以下成员参数:
enableCrypto
userCas
verifyHost
该版本于 2022 年 8 月 5 日发布。
修复了 SDK 偶现的崩溃问题。
该版本于 2022 年 7 月 12 日发布。
该版本对 SDK 进行了如下优化:
该版本于 2022 年 2 月 7 日发布。
代理状态回调 API 重构
自该版本起,代理状态回调 API 进行了重构。
v0.1.14.0 使用 didReceiveProxyEvent
回调获取代理的状态及错误码。
自 v1.0.0 起,删除 didReceiveProxyEvent
回调并改用以下回调:
onConnected
:连接代理成功。onAccelerationSuccess
:代理加速数据成功。onConnectionFailed
:连接代理失败且未回退。onDisconnectedAndFallback
:连接代理失败且回退至本地连接。新增连接限制
自该版本起,每秒并发连接数最多为 100 条,当前存在的活跃连接最多 1000 条。
如果超出限制,根据你是否设置了 fallback 机制,SDK 会在 onConnectionFailed
或 onDisconnectedAndFallback
回调的 reason
参数中返回 -108 或 -109 错误码。
错误码重构
自该版本起,SDK 返回的错误码进行了重构。
v0.1.14.0 中,同步和异步均可返回错误码。
v1.0.0 中,错误码分为 FpaError
和 FpaFailedReason
:同步返回 FpaError
;异步返回 FpaFailedReason
。且所有错误码的数值均发生变更。
不开启 Token 鉴权时的 token 参数值设置
在 FpaProxyServiceConfig
中,如果不开启 Token 鉴权,你不仅可以将 token
参数赋值为 App ID 的值,自该版本起也可以赋值为 null
、""
或不填该参数。
新增
onConnected
回调onAccelerationSuccess
回调onConnectionFailed
回调onDisconnectedAndFallback
回调FpaFailedReason
枚举类错误码变更
v0.1.14.0 的错误码如下:
值 | 说明 |
---|---|
0 |
没有错误。 |
-10001 |
通用错误。 |
-10002 |
FPA 服务未启动完成。 |
-10003 |
SDK 不支持该方法。 |
-10004 |
请求被拒绝。 |
-10005 |
缓冲区太小,无法存储返回的数据。 |
-10006 |
状态无效 |
-10007 |
超时错误。 |
-10008 |
请求频率超出限制。 |
-10009 |
参数无效。 |
-10010 |
SDK 未初始化。你需要先初始化 SDK 再进行其他操作。 |
-10011 |
没有权限。 |
-10012 |
FPA 服务启动失败。 |
-10013 |
代理端口绑定失败。 |
-10014 |
端口无效。 |
-10015 |
文件句柄无效。 |
-10016 |
连接失败。 |
-10017 |
发送失败。 |
-10018 |
读取失败。 |
-10019 |
找不到 chain ID。请检查是否设置了正确的 chain ID。 |
v1.0.0 的错误码如下:
值(FpaError ) |
说明 |
---|---|
0 |
没有错误。 |
-1 |
参数无效。请检查你是否使用了正确的参数。 |
-2 |
无法为对象分配内存。 |
-3 |
FPA 服务没有初始化。请确保你成功进行了初始化。 |
-4 |
FPA 服务初始化失败。 |
-5 |
无法绑定 SDK 内部的 socket 端口。 |
值(FpaFailedReason ) |
说明 |
---|---|
0 |
未知。 |
-101 |
DNS 解析错误。 |
-102 |
SDK 内部创建 socket 失败。 |
-103 |
SDK 内部连接 socket 失败。 |
-104 |
连接远端服务器超时。 |
-105 |
找不到 chain ID。请检查是否设置了正确的 chain ID。 |
-106 |
读取数据失败。 |
-107 |
写入数据失败。 |
-108 |
每秒并发连接数超出 100 条的限制。 |
-109 |
当前存在的活跃连接数超出 1000 条的限制。 |
删除
didReceiveProxyEvent
回调FpaProxyServiceProxyEvent
枚举类该版本于 2021 年 12 月 27 日发布。
代理端口动态变更
自该版本起,FPA iOS SDK 会对连接状态进行检查,在加速不可用时,会重新分配代理端口。例如,iOS 设备锁屏一段时间后,再将 app 切回到前台时,HTTP 代理和 TCP 透明代理的端口可能发生变更。
声网建议你在每次 HTTP 请求或 TCP 连接请求时,调用 httpProxyPort
或 getTransparentProxyPortWithChainInfo
获取最新的端口。
修复了 iOS 设备锁屏一段时间后,再将 app 切回到前台时 FPA 服务不可用的问题。
该版本于 2021 年 12 月 15 日发布。
修复了 app 切换到后台一段时间后,再切回到前台时 FPA 服务不可用的问题。
该版本于 2021 年 12 月 13 日发布。
import 方式变更
自该版本起,SDK 的 import 方式发生如下变化:
v0.1.0.0 的 import 方式如下:
#import <AgoraFpaService/FPAService.h>
v0.1.12.0 的 import 方式如下:
#import <AgoraFpaProxyService/FpaProxyService.h>
初始化方式变更
v0.1.0.0 版本的初始化逻辑中包含了设置 chain ID 操作,使用 sharedFPAService
和 startFPAServiceWithConfig
方法进行初始化。startFPAServiceWithConfig
一个方法完成开启 FPA 服务和添加 Delegate 两个功能。
FPAServiceConfig *config = [[FPAServiceConfig alloc] init];
config.appId = @"<Your App ID>";
config.token = @"<Your App ID or token>";
config.chainIdTable = @{
@"<Your domain or IP>":@<chain ID>,
};
[[FPAService sharedFPAService] startFPAServiceWithConfig:config addDelegate:(id<FPAServiceDelegate>)self];
v0.1.12.0 版本的初始化逻辑中移除了设置 chain ID 的操作。chain ID 在 setOrUpdateHttpProxyChainConfig
方法中设置。使用 FpaProxyService
和 startWithConfig
方法进行初始化。startFPAServiceWithConfig
更改为 startWithConfig
,仅完成开启 FPA 服务的功能。新增 setupDelegate
方法完成设置 delegate 的功能。这样实现了开启服务与设置 delegate 功能的分离。
FpaProxyServiceConfig *config = [[FpaProxyServiceConfig alloc] init];
config.appId = @"<Your App ID>";
config.token = @"<Your App ID or token>";
[[FpaProxyService sharedFpaService] startWithConfig:config];
[[FpaProxyService sharedFpaService] setupDelegate:(id<FpaProxyServiceDelegate>)self];
配置 chain ID 方式变更
v0.1.0.0 版本的设置 chain ID 操作包含在初始化过程中。详见初始化方式变更部分。
v0.1.12.0 版本的设置 chain ID 操作通过 setOrUpdateHttpProxyChainConfig
方法(HTTP 代理)和 getTransparentProxyPortWithChainInfo
方法(透明代理)进行。
下面的示例代码展示了如何为 HTTP 代理设置 chain ID:
// 为 HTTP 代理设置 chain ID
FpaHttpProxyChainConfig *httpConfig = [[FpaHttpProxyChainConfig alloc] init];
NSMutableArray *array = [NSMutableArray array];
FpaChainInfo *info =[FpaChainInfo fpaChainInfoWithChainId:123 address:@"<Your IP or domain>" port:30113 enableFallback:YES];
[array addObject:info];
httpConfig.chainArray = [array copy];
httpConfig.fallbackWhenNoChainAvailable = YES;
[[FpaProxyService sharedFpaProxyService] setOrUpdateHttpProxyChainConfig:httpConfig];
下面的示例代码展示了如何为透明代理设置 chain ID:
// 为透明代理设置 chain ID
FpaChainInfo *t_info = [FpaChainInfo fpaChainInfoWithChainId:123 address:@"<Your IP or domain>" port:30113 enableFallback:YES];
self.t_port = [[FpaProxyService sharedFpaProxyService] getTransparentProxyPortWithChainInfo:t_info];
回调监听方式变更
v0.1.0.0 版本使用 FPAServiceDelegate
类设置 didReceiveEvent
回调和 tokenWillExpire
回调。
v0.1.12.0 版本使用 FpaProxyServiceDelegate
类设置 didReceiveProxyEvent
回调。
透明代理
该版本新增 getTransparentProxyPortWithChainInfo
方法,用于获取 FPA 透明代理的端口。你可以通过透明代理实现基于 TCP 协议的全链路加速。
加速失败回退机制
该版本针对 HTTP 代理下的全部加速链路增加 fallbackWhenNoChainAvailable
属性,可以用于开启找不到源站对应的 chain ID 时的回退机制;针对单个加速链路增加 enableFallback
参数,可以用于开启加速失败回退机制。
开启找不到源站对应的 chain ID 时的回退机制之后,如果 FPA 找不到 chain ID,SDK 会自动回退到本地连接,不会造成网络连接中断。
开启加速失败回退机制之后,如果 FPA 加速失败,SDK 会自动回退到本地连接,不会造成网络连接中断。
代理类型 | 找不到源站对应的 chain ID 时的回退机制 | 加速失败回退机制 |
---|---|---|
HTTP 代理 | FpaHttpProxyChainConfig.fallbackWhenNoChainAvailable |
FpaChainInfo.fpaChainInfoWithChainId 的 enableFallback 参数 |
透明代理 | 无 | getTransparentProxyPortWithChainInfo 的 info 参数 |
支持 x86-64 架构
该版本新增对 x86-64 架构的支持。
修复了一些导致 SDK 崩溃的问题。
删除
renewToken
方法updateChainIdTable
方法onEvent
回调onTokenWillExpireEvent
回调FpaServiceConfig
类移除 chainIdTable
属性新增
setupDelegate
方法setOrUpdateHttpProxyChainConfig
方法getTransparentProxyPortWithChainInfo
方法fpaChainInfoWithChainId
方法getSdkVersion
方法getSdkBuildInfo
方法FpaServiceProxyEvent
回调FpaProxyServiceDiagnosisInfo
接口类FpaChainInfo
接口类FpaHttpProxyChainConfig
接口类FpaProxyServiceConnectionInfo
接口类FpaProxyServiceProxyEvent
枚举类变更
startFPAServiceWithConfig
方法改名为 startWithConfig
且删除了 addDelegate
参数destroyFPAService
改名为 stop
sharedFPAService
改名为 sharedFpaProxyService
FPAService
改名为 FpaProxyService
FPAServiceDelegate
改名为 FpaProxyServiceDelegate
FPAServiceConfig
改名为 FpaProxyServiceConfig
该版本于 2021 年 10 月 20 日发布。
该版本为 FPA iOS SDK 的首个版本。支持通过设置 HTTP 本地代理的方式实现基于 HTTP/HTTPS 的全链路加速。具体集成及使用方法参考以下文档: