solid/bundle_version

准备好使用的AppStore和Google Play包版本解析工具

2.0.1 2020-03-20 02:53 UTC

This package is auto-updated.

Last update: 2024-09-20 12:56:58 UTC


README

Build Status PHP Version Composer Version

一个小型工具集,可让您检查当前部署在GooglePlay和AppStore中的应用版本

安装

composer require solid/bundle_version

使用方法

每个商店都有自己的BundleVersionResolverInterface具体实现,例如GooglePlayVersionResolverAppStoreVersionResolver,您只需将其$bundleId传递给其resolve($bundleId)方法。成功时,您将收到包含$bundleId$currentRevision值的VersionQueryResultDTO结果或异常情况下的FailedToResolveGooglePlayVersionException实例

GooglePlay示例

use Solid\VersionChecker\Clients\GooglePlay\Exceptions\FailedToResolveGooglePlayVersionException;
use Solid\VersionChecker\Clients\GooglePlay\GooglePlayVersionResolver;
use GuzzleHttp\Client;

try {
    $resolver = new GooglePlayVersionResolver(new Client);
    $version = $this->resolver->resolve('com.app.example');

    echo $version->getBundleId() . ':' . $version->getCurrentRevision();
} catch(FailedToResolveGooglePlayVersionException $e) {
    echo 'Failed to resolve version';
}

这将输出com.app.example:1.0.0或错误情况下的Failed to resolve version

AppStore示例

use Solid\VersionChecker\Clients\AppStore\AppStoreVersionResolver;
use Solid\VersionChecker\Clients\AppStore\Exceptions\FailedToResolveAppStoreVersionException;
use GuzzleHttp\Client;

try {
    $resolver = new AppStoreVersionResolver(new Client);
    $version = $this->resolver->resolve('com.app.example');

    echo $version->getBundleId() . ':' . $version->getCurrentRevision();
} catch(FailedToResolveAppStoreVersionException $e) {
    echo 'Failed to resolve version';
}

这将输出com.app.example:1.0.0或错误情况下的Failed to resolve version

版本比较器

该包还提供了一个现成的版本比较算法,可让您执行版本检查

use Solid\VersionChecker\Clients\GooglePlay\Exceptions\FailedToResolveGooglePlayVersionException;
use Solid\VersionChecker\Clients\GooglePlay\GooglePlayVersionResolver;
use Solid\VersionChecker\Clients\AppStore\AppStoreVersionResolver;
use Solid\VersionChecker\Clients\AppStore\Exceptions\FailedToResolveAppStoreVersionException;
use Solid\VersionChecker\Comparators\SemverComparator;
use Solid\VersionChecker\Enums\VersionCompareResultEnum;
use GuzzleHttp\Client;

try {
    $httpClient = new Client;
    $appStoreResolver = new AppStoreVersionResolver($httpClient);
    $googlePlayResolver = new GooglePlayVersionResolver($httpClient);

    $appStoreVersion = $this->resolver->resolve('com.app.example');
    $googlePlayVersion = $this->resolver->resolve('com.app.example');
    $comparator = new SemverComparator();
    $versionCompareResult = $comparator->compare($appStoreVersion->getCurrentRevision(), $googlePlayVersion->getCurrentRevision())

    if($versionCompareResult->is(VersionCompareResultEnum::MAJOR)) {
       echo 'App store has newer major release than play store';
    } else if($versionCompareResult->is(VersionCompareResultEnum::MINOR)) {
       echo 'App store has newer minor release than play store';
    } else if($versionCompareResult->is(VersionCompareResultEnum::PATCH)) {
       echo 'App store has newer patch release than play store';
    } else {
       echo 'App store and google play share same version';
    }
} catch(FailedToResolveAppStoreVersionException $e) {
    echo 'Failed to resolve app store version';
} catch(FailedToResolveGooglePlayVersionException $e) {
     echo 'Failed to resolve google play version';
}