передача данных между обработчиком намерений sirikit и приложением

ios не позволяет содержащему приложению и содержащимся расширениям совместно использовать общий контейнер, поэтому предлагаемым решением является UserDefaults.

Я попытался использовать UserDefaults с обработчиком намерений sirikit, предполагая, что обработчик ведет себя как расширение следующим образом:

внутри IntentHandler.swift

let shared = UserDefaults(suiteName:XXXXXXXX.group...)
shared?.set("saved value 1", forKey: "key1")
shared?.set("saved value 2", forKey: "key2")
shared?.set("saved value 3", forKey: "key3")

внутри ViewController.swift в viewDidLoad

let shared = UserDefaults(suiteName:XXXXXXXX.group...)
if let temp1 = shared?.string(forKey:"key1")
{
contentLabel.text = temp1
}
if let value = shared?.string(forKey: "key2")
{
valueLabel.text = value
} 
if let key = shared?.string(forKey: "key3")
{
keyLabel.text = key
}

я вижу строки, соответствующие key1 и key2 на экране моего ipad, но не для key3, добавление кода с синхронизацией не помогает.

вот мои вопросы:

1) обработчики sirikit отличаются от других расширений? если да, как передать данные в мое приложение? если нет, я неправильно использую UserDefaults?

2) есть ли лучший способ обработки IPC между приложением и его расширениями, где мне просто нужно передавать между ними простые строковые сообщения.

используя swift 3.0 и xcode 8.2.1


person user2815661    schedule 19.01.2017    source источник


Ответы (2)


Убедитесь, что у вас включена группа приложений для всех целей, из которых вы хотите получить доступ к группе. Зарегистрируйтесь в проекте -> ваша цель -> возможности в разделе «Группы приложений».

person Florian    schedule 18.03.2017

Есть что-то под названием MMWomhole. Это определенно сделает работу.

person Harman Khurana    schedule 02.02.2017
comment
Библиотека умерла от запущенности :( - person Shayne; 22.05.2019