FTStore Manager puts an app on a device through the same three stages FTStore does, and had nothing to show for any of it once the screen was off. It has a Live Activity now: the same widget the app carries, embedded as its own extension under its own identifier, naming the app, filling a bar while the bytes arrive, adding the rate and the time left, then Preparing and Installing. It is the app's island with the pause button taken out. This download manager has no pause and no screen to offer one from, so there are no intents to compile into the extension and no paused state in the payload. The island is read-only on every version rather than only on the older ones. It ends when the installer answers, which is the part the app had to learn the hard way. Open launches what was just installed and leaves the sheet standing behind it, so ending on dismissal left the island describing an install that had finished, until somebody came back and closed a receipt they were done with. Dismissal still ends it, which is what covers a flow that never gets an answer at all. A dropped connection is now one of those answers. It used to remove the download and tell nobody, leaving the flow spinning with no way to find out; that was merely invisible before and would now be an island counting bytes that stopped arriving. None of this is visible from a build: an IPA whose extension is missing, misnamed or misfiled installs, runs, and simply shows no island. Both of the Manager's release workflows therefore run the same check the app's do against the built IPA, and the ad-hoc signing step seals the nested extension. Two products now build an extension of the same name out of projects that share their identifiers, so the separate derived data paths carry more weight than before, and the notes that explain them say so.
414 lines
9.3 KiB
Plaintext
414 lines
9.3 KiB
Plaintext
{
|
||
"sourceLanguage": "en",
|
||
"strings": {
|
||
"%lld apps": {
|
||
"extractionState": "manual",
|
||
"localizations": {
|
||
"ar": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld تطبيقات"
|
||
}
|
||
},
|
||
"cs": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld aplikací"
|
||
}
|
||
},
|
||
"de": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld Apps"
|
||
}
|
||
},
|
||
"en": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld apps"
|
||
}
|
||
},
|
||
"es": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld apps"
|
||
}
|
||
},
|
||
"fa": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld برنامه"
|
||
}
|
||
},
|
||
"fr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld apps"
|
||
}
|
||
},
|
||
"id": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld aplikasi"
|
||
}
|
||
},
|
||
"it": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld app"
|
||
}
|
||
},
|
||
"pl": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld aplikacji"
|
||
}
|
||
},
|
||
"pt-BR": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld apps"
|
||
}
|
||
},
|
||
"ru": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld прил."
|
||
}
|
||
},
|
||
"th": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld แอป"
|
||
}
|
||
},
|
||
"tr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld uygulama"
|
||
}
|
||
},
|
||
"vi": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld ứng dụng"
|
||
}
|
||
},
|
||
"zh-Hans": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "%lld 个 App"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"Downloading": {
|
||
"comment": "Install phase, shown on the Live Activity",
|
||
"extractionState": "manual",
|
||
"localizations": {
|
||
"ar": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "جارٍ التنزيل"
|
||
}
|
||
},
|
||
"cs": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Stahování"
|
||
}
|
||
},
|
||
"de": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Wird geladen"
|
||
}
|
||
},
|
||
"en": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Downloading"
|
||
}
|
||
},
|
||
"es": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Descargando"
|
||
}
|
||
},
|
||
"fa": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "در حال دانلود"
|
||
}
|
||
},
|
||
"fr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Téléchargement"
|
||
}
|
||
},
|
||
"id": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Mengunduh"
|
||
}
|
||
},
|
||
"it": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Download in corso"
|
||
}
|
||
},
|
||
"pl": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Pobieranie"
|
||
}
|
||
},
|
||
"pt-BR": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Baixando"
|
||
}
|
||
},
|
||
"ru": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Загрузка"
|
||
}
|
||
},
|
||
"th": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "กำลังดาวน์โหลด"
|
||
}
|
||
},
|
||
"tr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "İndiriliyor"
|
||
}
|
||
},
|
||
"vi": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Đang tải xuống"
|
||
}
|
||
},
|
||
"zh-Hans": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "正在下载"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"Installing": {
|
||
"comment": "Install phase, shown on the Live Activity",
|
||
"extractionState": "manual",
|
||
"localizations": {
|
||
"ar": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "جارٍ التثبيت"
|
||
}
|
||
},
|
||
"cs": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Instalace"
|
||
}
|
||
},
|
||
"de": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Wird installiert"
|
||
}
|
||
},
|
||
"en": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Installing"
|
||
}
|
||
},
|
||
"es": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Instalando"
|
||
}
|
||
},
|
||
"fa": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "در حال نصب"
|
||
}
|
||
},
|
||
"fr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Installation"
|
||
}
|
||
},
|
||
"id": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Memasang"
|
||
}
|
||
},
|
||
"it": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Installazione"
|
||
}
|
||
},
|
||
"pl": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Instalowanie"
|
||
}
|
||
},
|
||
"pt-BR": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Instalando"
|
||
}
|
||
},
|
||
"ru": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Установка"
|
||
}
|
||
},
|
||
"th": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "กำลังติดตั้ง"
|
||
}
|
||
},
|
||
"tr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Yükleniyor"
|
||
}
|
||
},
|
||
"vi": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Đang cài đặt"
|
||
}
|
||
},
|
||
"zh-Hans": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "正在安装"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"Preparing": {
|
||
"comment": "Install phase, shown on the Live Activity",
|
||
"extractionState": "manual",
|
||
"localizations": {
|
||
"ar": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "جارٍ التحضير"
|
||
}
|
||
},
|
||
"cs": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Příprava"
|
||
}
|
||
},
|
||
"de": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Wird vorbereitet"
|
||
}
|
||
},
|
||
"en": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Preparing"
|
||
}
|
||
},
|
||
"es": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Preparando"
|
||
}
|
||
},
|
||
"fa": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "در حال آمادهسازی"
|
||
}
|
||
},
|
||
"fr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Préparation"
|
||
}
|
||
},
|
||
"id": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Menyiapkan"
|
||
}
|
||
},
|
||
"it": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Preparazione"
|
||
}
|
||
},
|
||
"pl": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Przygotowywanie"
|
||
}
|
||
},
|
||
"pt-BR": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Preparando"
|
||
}
|
||
},
|
||
"ru": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Подготовка"
|
||
}
|
||
},
|
||
"th": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "กำลังเตรียม"
|
||
}
|
||
},
|
||
"tr": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Hazırlanıyor"
|
||
}
|
||
},
|
||
"vi": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "Đang chuẩn bị"
|
||
}
|
||
},
|
||
"zh-Hans": {
|
||
"stringUnit": {
|
||
"state": "translated",
|
||
"value": "正在准备"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"version": "1.0"
|
||
}
|