Перейти к содержимому

История выпусков и заявление разработчика

Pro использует общие с ArtCut функции монтажа, но является платной версией без рекламы. Само это различие не снимает возможных вопросов о дублирующих приложениях. ArtCut Pro явно включён в апелляцию по членству независимо от того, удалось ли добавить его в пять выбранных записей формы.

Уточнение статусов · 13 сентября 2026 г.

До уведомления о предстоящем прекращении участия от 2 сентября EasyTallys имело статус In Review — «На рассмотрении». Остальные шесть приложений — VPN XX, VPN XX PRO, SpellVPN Tool, SpellVPN Ultra, ArtCut и ArtCut Pro — отображались как Distributable, то есть готовые к распространению.

Теперь разработчик сообщает, что все семь приложений удалены из общедоступного App Store, но записи об их статусах по-прежнему видны в App Store Connect. Удаление из магазина не означает исчезновения записей приложений или статусов платформ и версий. Видимый статус не подтверждает восстановление распространения или участия в программе.

Это уточнение предоставлено разработчиком 13 сентября. Оно не является независимой проверкой App Store Connect в реальном времени, квитанцией Apple или изменением сохранённых свидетельств исходного кода от 12 сентября.

Скачать уточнение статусов (TXT)

Что подтверждают изученные материалы

В проверенной ветви без ARTCUT_FREE установлено платное распространение и displaysAds = false. Это подтверждает различие на уровне кода, а не состав связанных фреймворков во всех исторических архивах. Мы не заявляем о неподтверждённом выпуске или уже выполненном объединении приложений.

Дальнейшие меры — выполнение ещё не подтверждено

Мы проверим точный архив платной версии и метаданные и выполним требования по объединению или отзыву. Просим Apple указать сборку, поведение или описание ArtCut Pro, которые учитывались в решении по участию в программе, чтобы мы могли ответить по существу.

Подтверждающие материалы

E11

ArtCut / Pro: версии и запрос разрешения на отслеживание

Показаны различия на этапе компиляции и один путь запроса разрешения. Они не доказывают состав связанных фреймворков в исторических архивах, успешное получение согласия на устройствах или загрузку локальных исправлений.

Просмотреть выдержки

Источник: VideoEditorPro/VideoEditorPro/App/AppVariant.swift · 1–22

Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.

    1 | import Foundation
    2 | 
    3 | enum AppDistribution {
    4 |     case paid
    5 |     case freeWithAds
    6 | }
    7 | 
    8 | enum AppVariant {
    9 |     /// The App Store listing for the paid build. Keep this as a universal
   10 |     /// App Store URL so the storefront can localize the product name.
   11 |     static let proAppStoreURL = URL(string: "https://apps.apple.com/app/id6790354436")!
   12 | 
   13 | #if ARTCUT_FREE
   14 |     static let distribution: AppDistribution = .freeWithAds
   15 |     static let displaysAds = true
   16 |     static let displayName = "ArtCut"
   17 | #else
   18 |     static let distribution: AppDistribution = .paid
   19 |     static let displaysAds = false
   20 |     static let displayName = "ArtCutPro"
   21 | #endif
   22 | }
SHA-256 полного исходного файла
72e091896724be8dca7c2981a23f593c8b3e9a98dd3d4b1f361835180455cf76
SHA-256 выдержки с номерами строк
5e59357e3959e55b04ba12ef0a8e229041ee6b9841f6a51ece760ba0c365eb38

Источник: VideoEditorPro/VideoEditorPro/Services/TrackingAuthorizationManager.swift · 34–52

Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.

   34 |     func requestIfNeededBeforeAdRequests() async -> TrackingAuthorizationState {
   35 |         guard AppVariant.displaysAds else { return .notRequired }
   36 | 
   37 | #if ARTCUT_FREE && canImport(AppTrackingTransparency)
   38 |         let current = map(status: ATTrackingManager.trackingAuthorizationStatus)
   39 |         guard current == .notDetermined else { return current }
   40 | 
   41 |         if let requestTask {
   42 |             return await requestTask.value
   43 |         }
   44 | 
   45 |         let task = Task { @MainActor in
   46 |             try? await Task.sleep(nanoseconds: 650_000_000)
   47 |             return await withCheckedContinuation { continuation in
   48 |                 ATTrackingManager.requestTrackingAuthorization { status in
   49 |                     continuation.resume(returning: Self.map(status: status))
   50 |                 }
   51 |             }
   52 |         }
SHA-256 полного исходного файла
06092d42bedd141bd32f96880f2e5acfd368d4e48a79d5b9d6f5039a3a52d982
SHA-256 выдержки с номерами строк
9fa52ec7f8eb9066e92101a158c010f6c7b0d9d587246f96b2d30d8728141f8b

Как понимать эти материалы

В подборку входят подтверждённая разработчиком история выпусков, выдержки из текущего локального кода, локальные черновики метаданных и два исходных снимка формы, предоставленных разработчиком. Это разные виды свидетельств. Здесь нет точных архивов исторических загрузок, квитанций Apple об их получении, документов о разрешении на распространение контента сервиса или новых одобрений App Store. SHA-256 идентифицирует сохранённые байты, но не доказывает, что Apple получила или проверила их. Выбранные выдержки не являются исчерпывающим аудитом исходного кода или бинарных файлов.

Это общедоступные материалы с одинаковым содержимым для всех читателей. Личные идентификаторы учётной записи, частная переписка, учётные данные узлов и действующие URL общедоступных подписок не публикуются. Защиты паролем нет. При необходимости оригиналы могут быть переданы Apple отдельно по подходящему непубличному каналу. Указание noindex — пожелание для поисковых систем, а не ограничение доступа.

Переведены пояснения и сведения о происхождении материалов. Код и снимки экрана оставлены на языке оригинала; русские тексты не заменяют исходные свидетельства и не означают нового одобрения Apple.

Все подтверждающие материалы →