Нет доступа к каталогу группы приложений из расширения приложения

У меня есть приложение (swift 4, iOS 11), с расширением приложения (клавиатура). Приложение создает json файл, который будет сохранен в каталоге группы приложений. Это следующий код:

    func testingAppGroups(){
    let exampleJson = """
    {
     "dataRelease": "27.07.2018",
     "getDataDate": "02.8.2018"
    }

    """
    let groupID = "group.myApp"
    let fileManger = FileManager.default
    guard let groupURL =      fileManger.containerURL(forSecurityApplicationGroupIdentifier: groupID) else {
        fatalError("APP.ViewController: Could not open shared Group dir")
    }
    let storagePathURL = groupURL.appendingPathComponent("source.json")
    let storagePath = storagePathURL.path

    print("Source.json exist : \(fileManger.fileExists(atPath: storagePath))")

    print("Path : \(storagePath)")

    if !fileManger.fileExists(atPath: storagePath){
        fileManger.createFile(atPath: storagePath, contents: exampleJson.data(using: .utf8), attributes: nil)
    }

    do {
        let data = try Data(contentsOf: storagePathURL, options: .mappedIfSafe)
        let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves)
        print(jsonResult)
    } catch {
        // handle error
    }
}

Сейчас я пытаюсь прочитать json файл из каталога группы приложений в моем расширении приложения:

func testingAppGroups(){
        let groupID = "group.myApp"
        let fileManger = FileManager.default
        guard let groupURL = fileManger.containerURL(forSecurityApplicationGroupIdentifier: groupID) else {
            print("APPEX: Could not open shared Group dir")
            return
        }
        let storagePathURL = groupURL.appendingPathComponent("source.json")
        let storagePath = storagePathURL.path

        do {
            let data = try Data(contentsOf: storagePathURL, options: .mappedIfSafe)
            let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves)
            print(jsonResult)
        } catch {
            // handle error
        }
}

Если я запускаю свое приложение в симуляторе, расширение приложения отменяет функцию в guard с выхода консоли:

APPEX: не удалось открыть общий каталог группы

Мой вопрос:

Что я не прав? Кажется, расширение приложения не имеет доступа к каталогу группы приложений. Я с нетерпением жду каждого намека:-)

0 ответов

Другие вопросы по тегам