Skip to content

1.17.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 13:46

What's New

  • Adds MHRemoteUpdate, a Foundation-only module available through
    MHPlatformCore, MHPlatform, or its standalone product.
  • Provides version comparison, identity-validated App Store lookup, and explicit
    notRequired, updateRequired, and unavailable decisions.
  • Retains scheduled update requirements across launches and re-evaluates
    activation, expiry, installed version, and publication evidence when checking
    an operation.
  • Adds standard App Store integration with a policy URL and Store ID,
    package-managed persistence, preparation, and operation checks.

Adoption

import MHPlatformCore

let updates = try MHRemoteUpdateController(
    appStoreID: appStoreID,
    policyURL: policyURL
)
let preparation = try await updates.prepare()

Call prepare() at startup and foreground entry points. Place
checkOperationAllowed() before protected operations; it requires confirmed
permission and refreshes once when evidence is unavailable. App-designated
low-impact operations can explicitly use .allowWhenUnavailable. A confirmed
update requirement blocks both rules.

Standard integration uses the jp storefront, a maximum policy-document
lifetime of 30 days, and publication evidence valid for 24 hours. Apps supply
release policy, classify operations, and connect lifecycle hooks, UI, and
logging. Adoption requires app changes; existing binaries do not acquire
enforcement automatically.

Publish operational policy independently of app source releases. See the
remote update adoption guide
for the JSON contract, deployment approach, legacy migration, and advanced
overrides.

Reliability

  • Preserves immutable policy identity through JSON round trips by normalizing
    dates to whole seconds and rejecting collapsed intervals.
  • Retries failed initial cache reads on a later preparation call until evidence
    initializes.
  • Bypasses local HTTP cache when observing App Store publication, preventing
    stale metadata from renewing publication evidence.

Compatibility and Verification

This is an additive minor release from 1.16.0; existing public APIs remain
available. Verification includes 114 relevant iPhone Simulator tests, five
consumer fixtures, SwiftLint, the Example app build, and eight version-selection
tests. App-specific adoption and live Store or policy deployment remain separate
verification steps.

Full Changelog: 1.16.0...1.17.0