Skip to main content

集成 ShiplyPro iOS SDK

一、隐私安全说明

Shiply专业版SDK
版本:1.0.0
更新时间:2025年4月29日
SDK介绍:为移动开发者提供动态下发配置开关、动态下发资源文件、应用内升级和在线热修复能力
服务提供方:深圳市腾讯计算机系统有限公司
接入指引:集成 ShiplyPro iOS SDK
隐私保护规则:《Shiply专业版SDK个人信息保护规则》

二、 接入指引

2.1 配置CocoaPods依赖

通过 Cocoapods 的 Podfile 集成 ShiplyPro.xcframework

# 添加镜像源
source 'https://github.com/CocoaPods/Specs'
# 集成全部能力(推荐)
pod 'ShiplyPro', '1.0.0'

如果希望按需集成模块

# 集成远程配置能力
pod 'ShiplyPro', '1.0.0', :subspecs => ['Core', 'RemoteConfig']
# 集成远程资源能力(由于RemoteConfig是所有子系统底层能力,使用远程资源也会集成RemoteConfig模块)
pod 'ShiplyPro', '1.0.0', :subspecs => ['Core', 'RemoteResource']

如果无法访问 Github,可以使用腾讯 Coding 源

pod 'ShiplyPro', :git => "https://e.coding.net/tencent-tds/shiply/Shiply-Pro.git", :tag => '1.0.0'

2.2 极简接入

#import <ShiplyPro/Shiply.h>
#import <ShiplyPro/ShiplyLoggerProtocol.h>

ShiplyParams *params = [[ShiplyParams alloc] init];
params.appId = @"29f3fb41fe";
params.appKey = @"7332bf11-142b-44d0-8ea3-d45d3655f7de";
params.deviceId = @"your_unique_deivce_id";
params.userId = @"your_unique_user_id";
struct utsname systemInfo;
uname(&systemInfo);
NSString *devModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
params.devModel = devModel;
params.hostAppVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
params.systemVersion = [[UIDevice currentDevice] systemVersion];
params.platform = ShiplyPlatformIOS;
self.shiply = [[Shiply alloc] initWithParams:params loggerDelegate:self];


#pragma mark - ShiplyLoggerProtocol
- (void)logMsg:(NSString *)msg level:(RAFTLogLevel)level {
// Shiply 不会自动上传日志,请将 Shiply 日志打印到你的日志系统中,如需反馈问题,你需要提供 Shiply 日志。
NSLog(@"%@", msg);
}

三、使用配置发布

3.1 获取SDK

RDeliverySDK *sdk = [self.shiply getRDeliveryInstance];
//如果某些业务代码在初始化阶段就会读配置,可能存在读取的时候配置还未加载完成的情况。此类业务可以实现RDConfigEventListener协议,并添加监听者,在onConfigInfoInited方法中读取配置
[sdk addConfigEventListener:self];

3.2 获取配置值

当远端不存在这个配置开关key,或未拉到该配置,或web上未设置该key的配置值时,会返回 defaultValue。

NSString *stringValue = [self.rdeliverySDK stringValueWithKey:configKey defaultValue:@"{\"k1\":\"v1\"}"];

3.3 获取开关值

当远端不存在这个配置开关key,或未拉到该配置,或者web上该key的开关值为「未设置」时,会返回 defaultValue。

BOOL isSwitchOn = [self.rdeliverySDK isSwitchOn:configKey defaultValue:NO];

3.4 获取配置对象(RDConfigInfo类型)

RDConfigInfo *info = [self.rdeliverySDK configInfoWithKey:configKey];

3.5 更多用法

参考:使用配置和开关

四、使用资源发布

4.1 获取SDK

ResHub *sdk = [self.shiply getResHubInstance];

4.2 下载指定资源

[[self resHub] loadLatestWithId:resId
progress:^(CGFloat progress) {

} completed:^(BOOL success, NSError * _Nullable error, ResHubModel * _Nullable resModel) {
}];

4.3 读取下载到本地的资源

ResHubModel *model = [[self resHub] latestResWithId:[self resId]];

4.4 更多用法

参考:使用资源发布 SDK