EasyTallys
Исправленная версия для iOS: 1.0.2, сборка 1.0.1. Выпуски для других платформ следует оценивать по соответствующим отправленным сборкам.
Открыть сведения о приложении →Материалы разработчика · 12 сентября 2026 г.
Семь отдельных приложений в App Store: различия редакций, версии для каждой платформы и пределы доказательств.
По сообщению разработчика, форма апелляции позволяет добавить не более пяти записей о приложениях. Это ограничение интерфейса не должно сужать рамки апелляции по всей учётной записи. Ниже представлены семь подтверждённых приложений; версии для iOS и Mac могут указываться в форме отдельно. Два сохранённых снимка экрана показывают отдельные поля приложений и ограничение количества символов, но не ограничение в пять записей. Поэтому последнее не представляется здесь как независимо подтверждённое общее правило Apple.
EasyTallys указано первым, поскольку для него документально описана ранее выявленная проблема. Этот порядок не устанавливает, какое приложение стало причиной решения по учётной записи.
Исправленная версия для iOS: 1.0.2, сборка 1.0.1. Выпуски для других платформ следует оценивать по соответствующим отправленным сборкам.
Открыть сведения о приложении →Подтверждённый разработчиком выпущенный вариант для iOS: 1.0.8. Менеджер конфигураций с рекламой.
Открыть сведения о приложении →iOS 1.0.7 и Mac 1.0.1. Обе версии PRO были выпущены, а не оставались только локальными экспериментами.
Открыть сведения о приложении →Платный клиент конфигураций без рекламы для iOS и Mac, отдельный от SpellVPN Ultra.
Открыть сведения о приложении →Версия для iOS с рекламой и необязательными автоматически возобновляемыми подписками StoreKit.
Открыть сведения о приложении →Бесплатный видеоредактор с рекламой; отдельное приложение от ArtCut Pro.
Открыть сведения о приложении →Платный видеоредактор без рекламы с отдельным App Store ID и ветвью конфигурации распространения на этапе компиляции.
Открыть сведения о приложении →До уведомления о предстоящем прекращении участия от 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)Мы просим пересмотреть предстоящее прекращение участия в программе разработчиков и предоставить возможность повторной проверки исправленных версий. Мы признаём конкретные проблемы и пробелы в раскрытии информации, описанные ниже для каждого приложения. Просим App Review рассмотреть всю учётную запись, а не только записи, доступные для выбора в форме, и указать другие приложения, платформы, сборки, функции, источники контента или переписку, на которых основано решение. Если действия, связанные с другим приложением, также повлияли на решение, просим уточнить их, чтобы мы могли ответить по существу. Это дополнение к апелляции, о постановке которой в очередь уже сообщили, а не утверждение об одобрении или просьба обойти проверку.
Указанные статусы являются историческими, а не текущими: разработчик предоставил уведомление от 2 сентября и последующую переписку с подтверждением постановки апелляции в очередь. Восстановление участия в программе, одобрение приложений или приостановка процедуры прекращения участия не подтверждены. Обновление сайта не меняет установленные бинарные файлы или метаданные App Store.
В подборку входят подтверждённая разработчиком история выпусков, выдержки из текущего локального кода, локальные черновики метаданных и два исходных снимка формы, предоставленных разработчиком. Это разные виды свидетельств. Здесь нет точных архивов исторических загрузок, квитанций Apple об их получении, документов о разрешении на распространение контента сервиса или новых одобрений App Store. SHA-256 идентифицирует сохранённые байты, но не доказывает, что Apple получила или проверила их. Выбранные выдержки не являются исчерпывающим аудитом исходного кода или бинарных файлов.
Это общедоступные материалы с одинаковым содержимым для всех читателей. Личные идентификаторы учётной записи, частная переписка, учётные данные узлов и действующие URL общедоступных подписок не публикуются. Защиты паролем нет. При необходимости оригиналы могут быть переданы Apple отдельно по подходящему непубличному каналу. Указание noindex — пожелание для поисковых систем, а не ограничение доступа.
Переведены пояснения и сведения о происхождении материалов. Код и снимки экрана оставлены на языке оригинала; русские тексты не заменяют исходные свидетельства и не означают нового одобрения Apple.
Ранее опубликованный TXT (EN / 中文)Для каждого файла указаны происхождение, ограничения и контрольные суммы. Русский текст содержит переведённые пояснения и выдержки из сохранённых оригиналов без изменений. Исходные PNG и ранее опубликованные TXT доступны отдельно.
E01
Это сохранённые локальные заявления разработчика. Утверждения этого документа об отправленном Release-бинарном файле или метаданных App Store не сопоставлены независимо с загруженным архивом или квитанцией Apple.
Источник: AppleLedger/AppStoreAssets/submission/GUIDELINE_5_6_RESPONSE_EN.md · 1–17
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
1 | # Guideline 5.6 Resolution Center Response
2 |
3 | Thank you for identifying this issue. We reviewed the rejected build and found that the production app target incorrectly retained an internal screenshot workflow. That workflow included launch arguments and environment variables that could inject sample records, force a local data store, bypass the privacy lock, and simulate iCloud or App Group availability. We understand that retaining this behavior in a production build was inappropriate and could appear intentionally hidden.
4 |
5 | The new build removes that workflow completely:
6 |
7 | - All screenshot-only data creation, deletion, and injection code has been removed.
8 | - All forced-local-store launch arguments and environment variables have been removed.
9 | - All privacy-lock and automatic-lock bypasses have been removed.
10 | - All simulated iCloud and App Group status results have been removed.
11 | - All language- or region-based app-icon switching, the English alternate icon, and the related system-switch prompt have been removed. Every user now receives the same primary "好记" icon.
12 | - Ledger, account, transaction, collaborator, and cold-wallet screens now display only data actually created and stored by the user.
13 | - The submitted Release binary contains no screenshot route, language override, demo-data, forced-local-store parameter, or alternate app icon.
14 |
15 | The app does not hide or reveal features based on reviewer identity, date, region, device, build source, or server configuration. App Review and all users now execute the same Release code path. All features are accessible through the normal user interface, and the App Store description and screenshots explicitly disclose shared ledgers and the on-device cold wallet vault.
16 |
17 | No backend account is required. iCloud and shared-ledger features can be tested on a device signed in to an Apple ID.
Источник: AppleLedger/README.md · 143–164
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
143 | Hello App Review Team,
144 | Thank you for reviewing our app.
145 | As explained in our response dated August 11, we investigated the previous rejection and identified an internal screenshot-production workflow that had been mistakenly retained in the production target. We understand why the presence of that workflow could have appeared to be hidden behavior.
146 | We have now submitted a corrected iOS binary:
147 | Version 1.0.2 (Build 1.0.1)
148 | This build supersedes the previously rejected binary and includes the following remediation:
149 | - All screenshot-only sample-data creation, deletion, and injection code has been removed.
150 | - The Release binary contains no screenshot route, demo-data parameter, forced-local-store parameter, language override, privacy-lock bypass, or automatic-lock bypass.
151 | - All simulated iCloud and App Group results have been removed. The app now displays only the actual status reported by Apple system services.
152 | - No alternate app-icon switching is available in the Release build. Every user receives the same primary “好记” icon.
153 | - Ledger, account, transaction, collaborator, and cold-wallet screens display only information created and stored by the user.
154 | - The app does not change, hide, or reveal functionality based on reviewer identity, date, region, device, build source, network response, or server configuration.
155 | - App Review and all users execute the same Release code path.
156 | EasyTallys (“好记”) is a local-first personal and family bookkeeping app. It has no developer-hosted account or backend, no advertising, no third-party analytics, no remote feature configuration, no in-app purchases or paywall, and does not download executable code or configuration that changes its functionality.
157 | Ledger data is stored on the user’s device. If the user enables iCloud, ledger data is synchronized only through Apple CloudKit under the user’s own Apple ID. No developer-provided login credentials are required.
158 | All features are accessible through the normal user interface:
159 | - Bookkeeping features are available from Overview, Transactions, Accounts, Budgets, Reports, and Library.
160 | - CloudKit shared-ledger features are available under Library > Sharing. Testing requires a device signed in to an Apple ID.
161 | - The on-device Keychain vault is available under Library > Cold Wallets. It only stores information manually entered by the user in the current device’s ThisDeviceOnly Keychain. It does not create cryptocurrency wallets, connect to blockchain services, perform transfers or trading, or upload vault information to any server.
162 | These features are also disclosed in the App Store description, screenshots, and Notes for Review.
163 | We respectfully request that App Review evaluate Version 1.0.2 (Build 1.0.1).
164 | If App Review still observes behavior associated with Guideline 5.6 in this corrected build, could you please identify the specific feature, navigation path, review steps, device conditions, or provide a screenshot of the observed behavior? This information would allow us to reproduce and address the concern immediately.
E02
Выбранная логика переопределения находится внутри условия DEBUG. Это не полный аудит Release-бинарного файла.
Источник: AppleLedger/AppleLedgerShared/Services/AppLanguage.swift · 127–141
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
127 | static var selected: AppLanguage {
128 | #if DEBUG
129 | let processInfo = ProcessInfo.processInfo
130 | if let value = processInfo.environment[environmentKey], let language = AppLanguage(value) {
131 | return language
132 | }
133 | if let index = processInfo.arguments.firstIndex(of: launchArgument),
134 | processInfo.arguments.indices.contains(index + 1),
135 | let language = AppLanguage(processInfo.arguments[index + 1]) {
136 | return language
137 | }
138 | #endif
139 | let rawValue = AppSettingsStore.defaults.string(forKey: storageKey) ?? AppLanguage.system.rawValue
140 | return AppLanguage(rawValue: rawValue) ?? .system
141 | }
E03
Выбранное переопределение начального экрана доступно только при DEBUG; далее используется обычный главный экран по умолчанию.
Источник: AppleLedger/AppleLedgerShared/Views/RootView.swift · 115–129
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
115 | private struct AppInitialRoute {
116 | var section: AppSection
117 | var libraryTab: LibraryTab
118 | var quickEntryKind: TransactionKind?
119 |
120 | static var current: AppInitialRoute {
121 | #if DEBUG
122 | let arguments = ProcessInfo.processInfo.arguments
123 | if let routeArgumentIndex = arguments.firstIndex(of: "-AppleLedgerInitialRoute"),
124 | arguments.indices.contains(routeArgumentIndex + 1) {
125 | return AppInitialRoute(rawValue: arguments[routeArgumentIndex + 1])
126 | }
127 | #endif
128 | return AppInitialRoute(section: .dashboard, libraryTab: .ledgers, quickEntryKind: nil)
129 | }
E04
Эти пути используют FileManager и CKContainer. Они не доказывают наличие production-entitlements, успешную синхронизацию или содержимое исторических бинарных файлов.
Источник: AppleLedger/AppleLedgerShared/Services/AppModelContainer.swift · 341–345
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
341 | private static var appGroupStoreDirectory: URL? {
342 | FileManager.default
343 | .containerURL(forSecurityApplicationGroupIdentifier: appGroupIdentifier)?
344 | .appending(path: "AppleLedger", directoryHint: .isDirectory)
345 | }
Источник: AppleLedger/AppleLedgerShared/Services/ImportExportService.swift · 436–441
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
436 | static func saveLatestBackup(_ archiveData: Data, createdAt: Date = .now) async throws -> ManualICloudBackupMetadata {
437 | #if canImport(CloudKit)
438 | let container = CKContainer(identifier: AppModelContainer.cloudKitContainerIdentifier)
439 | guard try await container.accountStatus() == .available else {
440 | throw ManualICloudBackupError.accountUnavailable
441 | }
E05
Ровно три значения URL заменены на [REDACTED PUBLIC SUBSCRIPTION URL] — «URL общедоступной подписки скрыт». Остальные выбранные строки сохранены. Этот каталог также есть в текущем общем дереве разработки бесплатной версии и не доказывает содержимое исторического бесплатного бинарного файла iOS 1.0.8. Сведения о выпусках PRO подтверждены разработчиком отдельно.
Источник: VPNAccountManager/VPNAccountManager/OnlineRouteCatalog.swift · 13–30
Значения URL подписок скрыты; остальные выбранные строки сохранены без изменений.
13 | enum OnlineRouteCatalog {
14 | static let sources = [
15 | OnlineRouteSource(
16 | id: "public-source-1",
17 | displayNameKey: "网络来源 1",
18 | urlString: "[REDACTED PUBLIC SUBSCRIPTION URL]"
19 | ),
20 | OnlineRouteSource(
21 | id: "public-source-2",
22 | displayNameKey: "网络来源 2",
23 | urlString: "[REDACTED PUBLIC SUBSCRIPTION URL]"
24 | ),
25 | OnlineRouteSource(
26 | id: "public-source-3",
27 | displayNameKey: "网络来源 3",
28 | urlString: "[REDACTED PUBLIC SUBSCRIPTION URL]"
29 | )
30 | ]
E06
Этот локальный черновик иллюстрирует формулировку об использовании только данных пользователя, которую требовалось исправить. Это не экспорт исторического описания App Store.
Источник: VPNAccountManager/MacAppStore/en-US.md · 15–31
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
15 | ## Description
16 |
17 | VPN XX PRO is a node and subscription manager for people who already have their own subscription links and configuration data.
18 |
19 | Key features:
20 |
21 | • Subscription management: Add, refresh, group, and organize multiple subscription links.
22 | • Multi-protocol parsing: VLESS, VMess, Trojan, Shadowsocks, ShadowsocksR, SOCKS5, HTTP, WireGuard, Hysteria, Hysteria2, TUIC, Clash/Mihomo YAML, and sing-box JSON.
23 | • Organized node list: View nodes by subscription group, with search, filtering, and expand/collapse controls.
24 | • Latency testing: Measure reachability and connection latency through real TCP connections. Results are not simulated.
25 | • QR import: Import subscription links or node configurations from QR codes.
26 | • Flexible sharing: Copy links, use the system share sheet, or create QR codes in VLESS, Clash, URI, and other supported formats.
27 | • iCloud sync: Keep your subscriptions and nodes synchronized across your own Apple devices.
28 | • Data management: Clear local data, clear iCloud data, or restore data from iCloud.
29 | • Personalization: Choose from multiple skins and switch the app language.
30 |
31 | VPN XX PRO only manages and parses configuration data supplied by the user. It does not provide VPN servers, create VPN tunnels, or sell network access. Node availability, speed, and content depend on the subscription service provided by the user.
E07
Первая выдержка показывает условие ULTRA; вторая — соответствующую ветвь без ULTRA. Пропущенные настройки ULTRA не представлены как настройки Tool.
Источник: SuperVPN-iOS/SuperVPNApp/SuperVPNApp.swift · 782–783
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
782 | static var current: AppProductConfiguration {
783 | #if SPELLVPN_ULTRA
Источник: SuperVPN-iOS/SuperVPNApp/SuperVPNApp.swift · 808–833
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
808 | #else
809 | return AppProductConfiguration(
810 | edition: .pro,
811 | distributionModel: "paid",
812 | adMode: "none",
813 | subscriptionProductID: "",
814 | weeklySubscriptionProductID: "",
815 | monthlySubscriptionProductID: "",
816 | quarterlySubscriptionProductID: "",
817 | yearlySubscriptionProductID: "",
818 | superWeeklySubscriptionProductID: "",
819 | superMonthlySubscriptionProductID: "",
820 | superQuarterlySubscriptionProductID: "",
821 | superYearlySubscriptionProductID: "",
822 | providerLinesEndpoint: "",
823 | providerSourceListEndpoint: "",
824 | appGroupIdentifier: plistString("SpellVPNAppGroupIdentifier", defaultValue: SuperVPNShared.appGroupIdentifier),
825 | admobApplicationID: "",
826 | yandexBannerAdUnitID: "",
827 | yandexInterstitialAdUnitID: "",
828 | yandexAppOpenAdUnitID: "",
829 | yandexNativeAdUnitID: "",
830 | adsShowPlaceholders: false
831 | )
832 | #endif
833 | }
E08
Эндпоинты служат свидетельством конфигурации, а не доступности сервиса или прав на распространение. Выдержка метаданных — локальный черновик, а не исторический экспорт App Store. Описание подписки должно раскрывать предоставляемые источники наряду с отключением рекламы.
Источник: SuperVPN-iOS/Configurations/SpellVPN-Ultra.xcconfig · 35–36
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
35 | SPELLVPN_PROVIDER_LINES_ENDPOINT = https:/$()/apixx.spellv.com/api/spellv
36 | SPELLVPN_PROVIDER_SOURCE_LIST_ENDPOINT = https:/$()/apixx.spellv.com/api/spellvNodeFlist
Источник: SuperVPN-iOS/SuperVPNApp/SuperVPNApp.swift · 3300–3311
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
3300 | repairInvalidUltraProviderEndpointOverridesIfNeeded(context: "Curated Sources import")
3301 | let product = ultraProviderImportConfiguration
3302 | guard let sourceListURL = product.providerSourceListEndpointURL else {
3303 | finishUltraProviderImport(success: false)
3304 | storeKitStatusMessage = localizedUIString("No provider source-list backend is configured.")
3305 | logs.insert(LogEntry(level: .error, category: .connection, message: "Ultra import endpoints unavailable: \(ultraProviderImportDiagnosticSummary(using: product))"), at: 0)
3306 | return
3307 | }
3308 | guard hasMemberAccess else {
3309 | finishUltraProviderImport(success: false)
3310 | storeKitStatusMessage = localizedUIString("Ultra subscription is required for this action.")
3311 | return
Источник: SuperVPN-iOS/AppStoreReadyPackage/02_AppStore_Metadata/ULTRA_APP_STORE_INTRO.zh-Hans_en-US.md · 59–85
Выдержка с исходными номерами строк; выбранные строки сохранены без изменений.
59 |
60 | Import your subscription URL, proxy link, QR code, or config file, then start an iOS Packet Tunnel in one tap. Ultra is free with ads, and subscriptions remove ads.
61 |
62 | ### Short Description
63 |
64 | SpellVPN Ultra is a VPN configuration client for iPhone and iPad. It helps you import and manage configurations you are allowed to use, including sing-box, Clash/Mihomo, Shadowsocks, VLESS, Trojan, and other common proxy formats. You can import by URL, QR code, clipboard, file, or iCloud Drive, organize nodes, and start a real iOS Packet Tunnel through Apple Network Extension.
65 |
66 | SpellVPN Ultra is free to download and may show ads while no subscription is active. Weekly, monthly, quarterly, and yearly auto-renewable subscriptions remove ads and keep Ultra benefits active. Purchases and restores are handled by Apple ID and the App Store.
67 |
68 | ### Long Description
69 |
70 | SpellVPN Ultra helps you manage your own VPN configurations, subscriptions, and proxy nodes in one place. It is designed for users who already have lawful access to VPN or proxy configurations and need a clean way to import, organize, test, and connect them on iOS.
71 |
72 | Key features:
73 |
74 | - Import subscription URLs, proxy links, QR codes, clipboard text, and local config files
75 | - Support sing-box JSON, Clash/Mihomo YAML, Base64 subscriptions, and common proxy links
76 | - Organize node groups, search nodes, switch nodes, and run basic reachability checks
77 | - Start or stop an iOS Packet Tunnel with one tap
78 | - View connection status, logs, traffic stats, and basic network information
79 | - Use DNS lookup, HTTP test, TLS test, IP lookup, and other network tools
80 | - Back up and restore app data through iCloud Drive
81 | - Remove ads and keep Ultra benefits active with an Ultra subscription
82 |
83 | Important note:
84 |
85 | SpellVPN Ultra does not provide public built-in VPN server accounts. Users need to import configurations, subscriptions, or nodes they are allowed to use. VPN connectivity and performance depend on the imported configuration, remote server, and current network conditions.
E09
Разработчик предоставил снимок экрана от 4 сентября 2026 г. Он показывает выбранную причину по лицензионному соглашению и тему Pending Account Termination — предстоящее прекращение участия. Это не квитанция об отправке и не подтверждение ограничения в пять записей.
E10
Разработчик предоставил снимок экрана от 4 сентября 2026 г. На нём видны указание о пределе в 2 000 символов и отдельный раздел PRO. Он не устанавливает ограничение в пять записей и не доказывает отправку апелляции.
E11
Показаны различия на этапе компиляции и один путь запроса разрешения. Они не доказывают состав связанных фреймворков в исторических архивах, успешное получение согласия на устройствах или загрузку локальных исправлений.
Источник: 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 | }
Источник: 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 | }
Apple описывает порядок апелляции и ответа с подтверждающими вложениями. Указанное выше ограничение формы сообщено разработчиком, а не установлено этими страницами.