部分用户在长时间不操作云机的情况下希望能回收实例资源或音视频推拉流,以提高资源使用效率,降低使用成本。云手机服务自动回收功能主要设计为云机实例服务主动退出的场景,支持平台类业务不同场景应用托管时长设置逻辑。
当前云手机 SDK 支持两种服务回收时长设置:
无操作推流服务回收时长,通过 setAutoRecycleTime 方法设置,通过 getAutoRecycleTime 方法查询。用户在指定时间内无任务操作,云机实例将停止推流并主动退出(客户端会收到 40004 错误码)。该时长最大支持设置24小时。
切后台保活时长,通过 setIdleTime 方法设置。用户在调用 switchBackground 通知云机客户端已经切后台或者与云机断连的时间达到指定时长后,云机实例将主动退出(客户端会收到 40010 错误码)。该时长最大支持设置2小时。
详细信息,参考 设置/获取无操作推流服务回收时长 和 设置保活时间。
//设置无操作推流服务回收时长(默认时长300秒) vePhone.setAutoRecycleTime(60).then(()=> { console.log('set successful'); }); //获取设置无操作推流服务回收时长 vePhone.getAutoRecycleTime().then(({duration})=> { console.log('get duration successful: ', duration); }); //设置客户端切后台保活时间(默认时长300秒) vePhone.setIdleTime(100);
详细信息,参考 设置/获取无操作推流服务回收时长 和 设置保活时间。
/** * @param time 无操作推流服务回收时长,单位:秒,范围:[0, 86400],即0到24小时 * 当time为0时,默认为300s。 * @param callback 设置无操作推流服务回收时长的回调 * @return 0 -- 正常返回,-1 -- ICoreEngine为空,-2 -- time参数小于0 */ int setAutoRecycleTime(int time, SetAutoRecycleTimeCallback callback); /** * @param callback 查询无操作推流服务回收时长的回调 * @return 0 -- 正常返回, -1 -- ICoreEngine为空 */ int getAutoRecycleTime(GetAutoRecycleTimeCallback callback); /** * 切换客户端前后台状态 * * @param on true-后台;false-前台 * @return <code>-1</code>表示调用失败,<code>0</code>表示调用成功 * @see PodControlService#setBackgroundSwitchListener(BackgroundSwitchListener) */ int switchBackground(boolean on); /** * 设置切后台保活时长 * * @param time 单位毫秒 * @return -1 表示未在播放状态下使用 */ int setIdleTime(long time);
详细信息,参考 设置/获取无操作推流服务回收时长 和 设置保活时间。
/// 设置无操作推流服务回收时长 /// - Parameter time: 默认300s /// - Return 0:接口调用成功;-2:time小于等于0 /// - Notes 调用此接口,会触发“phoneManager:setAutoRecycleTimeCallback:time:“回调 - (NSInteger)setAutoRecycleTime:(NSInteger)time; /// 获取无操作推流服务回收时长 /// - Notes 调用此接口,会触发“phoneManager:getAutoRecycleTimeCallback:time:“回调 - (void)getAutoRecycleTime; /// 切换前后台 /// - Parameter on: YES,后台;NO,前台 /// - Notes 调用此接口,会触发“phoneManager:onBackgroundSwitched:“回调 - (void)switchBackground:(BOOL)on; /// 设置后台保活时长 /// - Parameter time: 默认300s /// - Return 0:接口调用成功;-2:time小于等于0 - (NSInteger)setIdleTime:(NSInteger)time;
https://github.com/volcengine/vePhone/blob/main/Quick%20Start/Web/src/features/auto-recycle.js
https://github.com/volcengine/vePhone/tree/main/Quick%20Start/iOS
设置无操作推流服务回收时长或切后台服务保活时间必须在连接状态下进行设置,即必须在 start 方法成功后、stop 方法前进行调用,否则会报 40039 错误提醒,提醒设置结果失败。
切后台服务保活时间建议不要设置超长时间。当用户已将应用切后台或已断连,无需长时间保留云机实例服务。当用户再次 start 时,会重新分配新的云机实例。