一、 远程配置在软件开发中解决了哪些痛点?
在移动开发的诸多场景中,远程配置开关都发挥着不可或缺的作用。无论是新功能上线的谨慎试探,还是旧功能优化的灵活调整;无论是针对特定用户的精准营销,还是应对突发状况的应急处理,配置开关都能轻松搞定。它就像一把“万能钥匙”,随时为开发者打开解决问题的大门,让App在复杂多变的市场环境中游刃有余,始终保持着最佳的性能和用户体验。
1.1 新功能上线的“安全阀门”
“又要发布新功能了,可万一线上出问题咋办?每次都提心吊胆的。”这是许多开发者的心声。以往,新功能一上线,就像把一颗未经检验的“炸弹”扔进用户池,一旦出错,满盘皆输。但现在,远程配置的加入,让这一切变得从容不迫。通过设置功能总开关,开发者可以先将新功能“潜伏”在App中,静待最佳时机。一旦发现新功能存在漏洞或异常,只需轻轻一按远程开关,就能瞬间将其“封印”,避免问题蔓延,给用户带来糟糕体验。这就好比给新功能套上了一层“防护罩”,让开发者在创新的道路上大胆前行,无惧风险。
1.2 交互方案的“试金石”
在设计App时,常常面临两种交互方案的抉择困境:“到底哪种方案更受用户青睐呢?”以往,开发者只能凭借经验和少量用户反馈来“盲选”,结果往往不尽人意。如今,借助远程配置,开发者可以将两种方案同时上线,就像在App里搭建了两个“试验田”。通过远程配置,精准地将不同用户群体导向不同的交互方案,实时收集用户的行为数据、留存率、转化率等关键指标。经过一段时间的“实战演练”,数据会清晰地告诉开发者哪一方更胜一筹。如此一来,决策不再依赖主观臆断,而是基于真实、可靠的数据反馈,让App的交互设计更加贴合用户心意,提升整体使用体验。
1.3 老旧设备的“性能守护者”
随着App功能的不断丰富,一些老旧设备开始力不从心,卡顿、闪退等问题频发,严重影响用户体验。以往,开发者只能眼睁睁看着这部分用户流失,或者花费大量精力去优化代码,却收效甚微。远程配置的出现,为老旧设备带来了福音。开发者可以根据设备的性能参数,如CPU型号、内存大小等,通过远程配置动态关闭一些对性能要求较高的功能模块。比如,对于配置较低的设备,关闭高清视频播放、复杂的动画效果等功能,让App在老旧设备上也能流畅运行,宛如给这些设备量身定制了一套“轻量化”方案,延长了设备的使用寿命,也留住了宝贵的用户群体。
1.4 复杂模块的“精准调优器”
对于App中的复杂模块,如播放器、编辑器、端智能模型等,参数调优一直是个难题。以往,开发者需要依赖大量的线下测试和人工经验来调整参数,但这种方式往往难以精准把握线上用户的实际使用场景和需求。远程配置的加入,让开发者能够实时查看大盘监控数据,根据用户的行为习惯、网络环境、使用频率等多维度信息,精准地下发参数进行调优。比如,当发现用户在弱网络环境下频繁使用播放器时,可以远程调整视频缓存策略、分辨率切换逻辑等参数,确保用户在不同网络条件下都能获得最佳的播放体验。这种基于数据驱动的精准调优,让复杂模块的性能和功能表现更加出色,有效提升了App的核心竞争力。
1.5 提审与部署的“同步加速器”
App开发过程中,常常遇到这样的尴尬局面:App客户端已经开发完成,迫不及待地等着上线,可后台服务却还没部署到位。只能干等着后台上线,白白浪费宝贵的上线窗口期。远程配置巧妙地化解了这一难题。开发者可以先将App提交审核,同时在后台通过远程配置设置好相关的功能开关和参数。一旦后台服务部署完成,只需轻轻一点,远程配置就能将功能“激活”,让App瞬间具备完整的功能。这样一来,客户端和后台的部署不再相互掣肘,大大缩短了上线周期,让App能够更快地触达用户,抢占市场先机。
1.6 抽样率调整的“即时响应器”
在进行A/B测试或功能灰度发布时,抽样率的调整至关重要。以往,每次调整抽样率都需要找到后台开发人员,修改代码,重新部署,费时费力。远程配置的出现,让抽样率调整变得轻而易举。开发者只需在远程配置平台上简单操作,就能实时调整抽样率,无需繁琐的代码修改和部署流程。无论是想扩大灰度范围,还是缩小测试群体,都能瞬间实现,让测试和优化工作更加灵活高效,能够快速响应市场变化和用户反馈,及时调整策略。
1.7 黑白名单的“精准管控器”
在某些特殊场景下,开发者需要对用户访问进行精准管控。比如,某些内测功能只希望特定用户群体体验,或者要屏蔽一些恶意用户对特定功能的滥用。以往,这种管控往往需要在客户端或后台进行复杂的逻辑判断和权限设置,操作繁琐且容易出错。远程配置让这一切变得简单明了。开发者可以轻松地在远程配置平台上设置黑白名单,针对特定用户ID、设备ID等下发访问控制指令。这些指令会实时同步到客户端,精准地控制用户的访问权限。无论是内测邀请,还是恶意用户封禁,都能做到精准无误,有效保障了App的功能安全和用户体验。
1.8 特定时间功能的“定时开关”
有些功能只在特定时间才有意义,比如限时抢购、节日专属活动等。以往,开发者需要在代码中嵌入复杂的定时逻辑,到了指定时间手动触发或关闭功能,稍有不慎就会出现功能提前开启或延迟关闭的情况,引发用户投诉。远程配置的定时功能让这一切迎刃而解。开发者可以提前在远程配置平台上设置好功能的开启和关闭时间,到了指定时刻,远程配置自动触发开关,精准控制功能的展示和隐藏。这样一来,不仅避免了人工操作的失误,还能让功能的上线和下线更加符合业务节奏,给用户带来恰到好处的惊喜体验。
一、 远程配置在软件开发中解决了哪些痛点?
在移动开发的诸多场景中,远程配置开关都发挥着不可或缺的作用。无论是新功能上线的谨慎试探,还是旧功能优化的灵活调整;无论是针对特定用户的精准营销,还是应对突发状况的应急处理,配置开关都能轻松搞定。它就像一把“万能钥匙”,随时为开发者打开解决问题的大门,让App在复杂多变的市场环境中游刃有余,始终保持着最佳的性能和用户体验。
1.1 新功能上线的“安全阀门”
“又要发布新功能了,可万一线上出问题咋办?每次都提心吊胆的。”这是许多开发者的心声。以往,新功能一上线,就像把一颗未经检验的“炸弹”扔进用户池,一旦出错,满盘皆输。但现在,远程配置的加入,让这一切变得从容不迫。通过设置功能总开关,开发者可以先将新功能“潜伏”在App中,静待最佳时机。一旦发现新功能存在漏洞或异常,只需轻轻一按远程开关,就能瞬间将其“封印”,避免问题蔓延,给用户带来糟糕体验。这就好比给新功能套上了一层“防护罩”,让开发者在创新的道路上大胆前行,无惧风险。
1.2 交互方案的“试金石”
在设计App时,常常面临两种交互方案的抉择困境:“到底哪种方案更受用户青睐呢?”以往,开发者只能凭借经验和少量用户反馈来“盲选”,结果往往不尽人意。如今,借助远程配置,开发者可以将两种方案同时上线,就像在App里搭建了两个“试验田”。通过远程配置,精准地将不同用户群体导向不同的交互方案,实时收集用户的行为数据、留存率、转化率等关键指标。经过一段时间的“实战演练”,数据会清晰地告诉开发者哪一方更胜一筹。如此一来,决策不再依赖主观臆断,而是基于真实、可靠的数据反馈,让App的交互设计更加贴合用户心意,提升整体使用体验。
1.3 老旧设备的“性能守护者”
随着App功能的不断丰富,一些老旧设备开始力不从心,卡顿、闪退等问题频发,严重影响用户体验。以往,开发者只能眼睁睁看着这部分用户流失,或者花费大量精力去优化代码,却收效甚微。远程配置的出现,为老旧设备带来了福音。开发者可以根据设备的性能参数,如CPU型号、内存大小等,通过远程配置动态关闭一些对性能要求较高的功能模块。比如,对于配置较低的设备,关闭高清视频播放、复杂的动画效果等功能,让App在老旧设备上也能流畅运行,宛如给这些设备量身定制了一套“轻量化”方案,延长了设备的使用寿命,也留住了宝贵的用户群体。
1.4 复杂模块的“精准调优器”
对于App中的复杂模块,如播放器、编辑器、端智能模型等,参数调优一直是个难题。以往,开发者需要依赖大量的线下测试和人工经验来调整参数,但这种方式往往难以精准把握线上用户的实际使用场景和需求。远程配置的加入,让开发者能够实时查看大盘监控数据,根据用户的行为习惯、网络环境、使用频率等多维度信息,精准地下发参数进行调优。比如,当发现用户在弱网络环境下频繁使用播放器时,可以远程调整视频缓存策略、分辨率切换逻辑等参数,确保用户在不同网络条件下都能获得最佳的播放体验。这种基于数据驱动的精准调优,让复杂模块的性能和功能表现更加出色,有效提升了App的核心竞争力。
1.5 提审与部署的“同步加速器”
App开发过程中,常常遇到这样的尴尬局面:App客户端已经开发完成,迫不及待地等着上线,可后台服务却还没部署到位。只能干等着后台上线,白白浪费宝贵的上线窗口期。远程配置巧妙地化解了这一难题。开发者可以先将App提交审核,同时在后台通过远程配置设置好相关的功能开关和参数。一旦后台服务部署完成,只需轻轻一点,远程配置就能将功能“激活”,让App瞬间具备完整的功能。这样一来,客户端和后台的部署不再相互掣肘,大大缩短了上线周期,让App能够更快地触达用户,抢占市场先机。
1.6 抽样率调整的“即时响应器”
在进行A/B测试或功能灰度发布时,抽样率的调整至关重要。以往,每次调整抽样率都需要找到后台开发人员,修改代码,重新部署,费时费力。远程配置的出现,让抽样率调整变得轻而易举。开发者只需在远程配置平台上简单操作,就能实时调整抽样率,无需繁琐的代码修改和部署流程。无论是想扩大灰度范围,还是缩小测试群体,都能瞬间实现,让测试和优化工作更加灵活高效,能够快速响应市场变化和用户反馈,及时调整策略。
1.7 黑白名单的“精准管控器”
在某些特殊场景下,开发者需要对用户访问进行精准管控。比如,某些内测功能只希望特定用户群体体验,或者要屏蔽一些恶意用户对特定功能的滥用。以往,这种管控往往需要在客户端或后台进行复杂的逻辑判断和权限设置,操作繁琐且容易出错。远程配置让这一切变得简单明了。开发者可以轻松地在远程配置平台上设置黑白名单,针对特定用户ID、设备ID等下发访问控制指令。这些指令会实时同步到客户端,精准地控制用户的访问权限。无论是内测邀请,还是恶意用户封禁,都能做到精准无误,有效保障了App的功能安全和用户体验。
1.8 特定时间功能的“定时开关”
有些功能只在特定时间才有意义,比如限时抢购、节日专属活动等。以往,开发者需要在代码中嵌入复杂的定时逻辑,到了指定时间手动触发或关闭功能,稍有不慎就会出现功能提前开启或延迟关闭的情况,引发用户投诉。远程配置的定时功能让这一切迎刃而解。开发者可以提前在远程配置平台上设置好功能的开启和关闭时间,到了指定时刻,远程配置自动触发开关,精准控制功能的展示和隐藏。这样一来,不仅避免了人工操作的失误,还能让功能的上线和下线更加符合业务节奏,给用户带来恰到好处的惊喜体验。
二、 通过 Shiply 使用远程配置
市面上的大部分远程配置服务,都只能提供简单的开关值、配置值下发,而缺少高阶能力。例如:配置发布的测试、发布、审批流程;能够灰度放量;自定义下发条件;自定义用户群体等等。
腾讯推出的 Shiply 远程配置,结合实际发布过程中的痛点,提供了很多实用功能,使得配置的发布过程更加可控,是一个强大的远程配置发布平台。
Shiply 的配置在使用上和其他配置平台有着明显差异,像umeng、firebase是所有配置内容一个版本,每次都改都对所有配置内容生成一个新的版本。而 Shiply 是以每个配置项的发布任务承载发布变更的,这意味着 Shiply 的发布粒度可以控制的非常小,小到每次变更都只针对这个配置本身,并且可以支持配置项级别的灰度、放量、回滚等等。同时是支持增量拉取的,在拉取效率、拉取成功率上有明显的优势。
2.0 快速接入 SDK
2.0.1 查找最新版本 iOS SDK
可以在SDK 版本标签查询最新版本,截至目前,最新的版本是 1.3.5-rc.3 版本。
2.0.2 集成 iOS SDK
在 podfile 中声明依赖,然后执行 pod install 即可安装成功
source 'https://cdn.cocoapods.org/'pod 'ShiplyRDelivery', '~> 1.3.5-rc.3'
在全局功能与设置-项目设置,复制出APP ID和APP KEY
2.0.2 集成 iOS SDK
在 podfile 中声明依赖,然后执行 pod install 即可安装成功
source 'https://cdn.cocoapods.org/'pod 'ShiplyRDelivery', '~> 1.3.5-rc.3'
在全局功能与设置-项目设置,复制出APP ID和APP KEY
#import <UIKit/UIDevice.h>
#import "sys/utsname.h"
#import <ShiplyRDelivery/RDeliveryJsonModelImpl.h>
#import <ShiplyRDelivery/RDNetworkImpl.h>
#import <ShiplyRDelivery/RDLoggerImpl.h>
#import <ShiplyRDelivery/RDMMKVFactoryImpl.h>
// 依赖注入,我没有替换官方实现的诉求,直接用默认实现即可
RDeliveryDepends *depends = [RDeliveryDepends new];
depends.httpImpl = [RDNetworkImpl sharedInstance];
depends.logImpl = [RDLoggerImpl sharedInstance];
depends.kvImpl = [RDMMKVFactoryImpl sharedInstance];
depends.jsonModelImpl = [RDeliveryJsonModelImpl sharedInstance];
//初始化SDK设置
RDeliverySDKSettings *setting = [RDeliverySDKSettings settingWithAppId:@"29c5720503" appKey:@"xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" guid:@"your_app_user_id" depends:depends];
setting.qimei = @"my_app_device_id";
setting.envId = RDeliveryReleaseEnvId; // 正式环境
setting.updateMode = RDCONFIG_UPDATE_MODE_APP_START | RDCONFIG_UPDATE_MODE_SCHEDUAL;
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceType = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
setting.deviceType = deviceType;
setting.systemVersion = [UIDevice currentDevice].systemVersion;
RDeliverySDK *rdeliverySDK = [RDeliverySDK createSDKWithSettings:setting];
2.1 新建配置
2.1.1【新建配置】填写基本信息
这里除了【配置Key】和【配置值模板】是选择后确定的,其他都能再改。
2.1.2 新建配置后的列表
2.2 新建发布任务
新建完配置项后,现在还是无法拉取到配置内容的。因为这个平台的远程配置内容,是承载在发布任务上的,这也是和其他平台的差异之一。所以需要新建发布任务,设置下发条件,填写下发内容等等。
2.2.1 填写配置内容
2.2.2 设置放量策略
2.2.3 创建任务后的列表
创建完发布任务之后,现在仍然无法拉取到配置内容,因为此时的任务状态需要去扭转成体验中,才能进行测试。
2.3 进入任务详情,进行测试体验
2.3.1 添加体验人员,用于验证配置下发
处于【测试体验】状态的任务,线上用户是拉不到的,而测试人员可以通过加白名单来测试配置拉取。
2.4 审批并且发布
在本地测试,已经能够拉取到发布内容了,现在可以将这个任务发布,经过审批之后,线上用户就能拉取到了。
2.4.1 正式发布任务后的列表
2.5 复制任务到 Android 平台
可以通过复制任务,将已有的下发内容复制成一个新的任务,通过修改下发条件为:应用包含于 Android 平台,实现对 Android 平台的下发
通过以上步骤,我们完成了对 iOS、Android 平台下发远程配置的操作。
三、 总结
腾讯 Shiply 的远程配置功能,在发布粒度控制、灰度策略、下发条件、版本管理、权限与审批管理、增量拉取等层面有着特有的优势,相比市面上其他同类产品,Shiply 远程配置的功能要强大得多,也更符合中大型 App 的复杂的开发部署和协作方式。但是初次使用,会有一点学习成本,相信通过阅读本文,你也可以轻松集成 SDK 并创建你的第一个远程配置。