Я выдергиваю волосы из-за этой проблемы уже два дня. Я создаю небольшой файл фильма в приложении iPhone, который хочу отправить с iPhone для воспроизведения на Apple Watch. В качестве доказательства концепции я поместил аналогичный .mov в пакет приложения Apple Watch и смог без проблем воспроизвести его. Итак, я решил, что теперь, когда я хочу отправить на часы новый небольшой клип, я просто помещу его в контейнер App Group Shared и получу доступ к нему оттуда, а не из Bundle. Неа!
Я прошел через тонны S.O. сообщений, пробовал много разных подходов, но ничего не работает должным образом.
Прежде чем вы спросите, я несколько раз переделывал группу приложений, удалял старые из iTunes Connect, заново сгенерировал профили подготовки, очищал целевые объекты несколько раз, несколько раз удалял DerivedData, удалял приложения и запускал их несколько раз и пробовал практически все небольшие настройки и исправления, которые я мог найти на SO Ничего не помогает.
Я действительно думаю, что знаю, в чем проблема, но не знаю, как ее решить.
Вот код, который я использую как в приложении для iPhone, так и в приложении для часов, чтобы получить путь к общему контейнеру (этот фрагмент со стороны Watch):
let fileManager = FileManager.default
let sharedContainer = fileManager
.containerURL(
forSecurityApplicationGroupIdentifier: "group.com.mycompany.myappname")
let dirPath = sharedContainer?.path
sharedFilePathOnWatch = (dirPath! as NSString).appendingPathComponent("watchPreview.mov")
print ("Shared File Path on Watch: \(sharedFilePathOnWatch)")
print ("Shared File Path from iPhone: \(sharedFilePath)")
Операторы печати показывают мне общий путь к файлу, который я отправляю на часы с iPhone (через Watch Connectivity), и общий путь, который разрешает приложение Watch.
Что я получаю, когда это запускает, следующее:
Общий путь к файлу на Watch: /private/var/mobile/Containers/Shared/AppGroup/94AA7797-528D-4E96-9623-23285BE0742B/watchPreview.mov
Общий путь к файлу с iPhone: /private/var/mobile/Containers/Shared/AppGroup/4D43C314-CCBD-4861-BF90-69A8AC71198C/watchPreview.mov
Теперь я ожидал, что будет только один общий контейнер и что и iPhone, и часы должны разрешать один и тот же путь, но это не так. Я также заметил, что эти пути остаются постоянными для двух приложений при нескольких запусках. Это не динамический адрес, который меняется каждый раз, когда я бегу, как я подозревал некоторое время.
В качестве последней попытки заставить это работать, я подумал, что, поскольку у меня был путь к общему контейнеру на iPhone и общему контейнеру на Apple Watch, возможно, я мог бы просто переместить файл из одного в другой, потому что, ну , они должны делиться. Но нет, даже это не работает.
Итак, большие вопросы:
- Почему я разрешаю два разных пути в общих приложениях
- Как, черт возьми, мне передать свой маленький файл фильма с iPhone на Apple Watch