header('app-cli-os')); // 客户端版本 $cliVersion = (int) $request->header('app-cli-version', 0); $data = ['android' => null, 'ios' => null]; foreach ([ AppOs::Android, AppOs::Ios, ] as $os) { /** @var \App\Models\AppVersion|null */ $appVersion = AppVersion::onlyReleased() ->where('os', $os) ->latest('version') ->first(); if (is_null($appVersion)) { continue; } $json = AppVersionResource::make($appVersion)->resolve($request); // 如果客户端版本和最新的版本之前有全量包更新的版本,则需全量包更新 if (! $appVersion->isApkUpdate() && $cliOs === $os && $appVersion->version > $cliVersion + 1) { $isApkUpdate = AppVersion::onlyReleased() ->where('os', $cliOs) ->where('version', '>', $cliVersion) ->where('update_strategy', AppUpdateStrategy::Apk) ->exists(); if ($isApkUpdate) { $json['update_strategy'] = AppUpdateStrategy::Apk; if ((string) $appVersion->apk_url === '') { $json['apk_url'] = AppVersion::getLatestApkUrl($cliOs, $cliVersion); } } } // 如果客户端版本和最新的版本之间有强制更新的版本,则需强制更新 if (! $appVersion->is_force && $cliOs === $os && $appVersion->version > $cliVersion + 1) { $json['is_force'] = AppVersion::onlyReleased() ->where('os', $cliOs) ->where('version', '>', $cliVersion) ->where('is_force', true) ->exists(); } $data[$os->value] = $json; } return $data; } }