HealthKit & Today Extensions/Widgets

Кто-нибудь уже объединил эти две новые функции в iOS8? Я пытаюсь получить доступ к HealthKit из виджета. Но поскольку приложение и расширение используют два отдельных идентификатора приложения, виджет автоматически отказывает в доступе к HealthKit. В представлении «Центр уведомлений/Сегодня» не отображается запрос на разрешение доступа. Я заметил, что он пытается это сделать, потому что вижу в консоли предупреждение о «несбалансированном переходе контроллера представления», но ничего не отображается.

Для ручного исправления — приложение «Здоровье» отобразит идентификатор пакета с разрешениями, которые можно изменить вручную. Однако значка приложения нет, и расширение указано как идентификатор пакета, а не как название продукта. Это заставляет меня думать, что они все еще работают над бета-версией.


person Sean    schedule 21.08.2014    source источник
comment
Если у вас есть скайп, свяжитесь со мной, я работаю над чем-то подобным, и мы можем найти обходной путь. Возможно, в бета-версии 6 есть исправление, но у нас нет этого SDK :/   -  person Schemetrical    schedule 22.08.2014
comment
Конечно, я хотел бы услышать ваш обходной путь — какой у вас Skype?   -  person Sean    schedule 22.08.2014
comment
так же, как мое имя пользователя SO. Я еще не нашел обходного пути, но изучаю его: p   -  person Schemetrical    schedule 23.08.2014


Ответы (3)


Я еще не пробовал комбинировать эти функции в своем приложении, но при интеграции возможностей HealthKit я случайно увидел в документации HealthKit следующее:

И HealthKit, и приложение Health недоступны на iPad. Среду HealthKit нельзя использовать в расширении приложения

Поэтому я предполагаю, что прямой путь недоступен... Вы можете прочитать больше здесь: Документация по HealthKit_Framework

person goldengil    schedule 23.09.2014
comment
Ага... они наконец-то выложили эту документацию =) - person Sean; 23.09.2014
comment
Что ж, лучше поздно, чем никогда ^_^ - person goldengil; 23.09.2014

Вы можете попытаться получить доступ к данным HealthKit из своего содержащего приложения, а затем поделиться этими данными со своим расширением через группу приложений.

Я еще не смотрел на HealthKit, но в другом случае функция группы приложений у меня работала нормально.

person BalestraPatrick    schedule 22.08.2014
comment
Да, это вполне возможно, но не очень полезно, так как вам придется открывать приложение, чтобы обновить представление «Сегодня». - person Sean; 22.08.2014
comment
Что делать, если приложение запускается один раз из сегодняшнего виджета просмотра. Затем он может обмениваться данными с (содержащим) приложением до тех пор, пока оно не будет закрыто по какой-либо причине, например, перезапустить. - person AceN; 14.03.2020

Вы не сможете получить доступ к HealthKit. Процитируем Руководство по программированию Apple App Extension:

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

Из-за своей целенаправленной роли в системе расширение приложения не может участвовать в определенных действиях. Расширение приложения не может: …

Используйте любой API, помеченный в файлах заголовков с помощью макроса NS_EXTENSION_UNAVAILABLE, или аналогичный макрос недоступности, или любой API в недоступной среде.

Например, в iOS 8.0 платформа HealthKit и платформа пользовательского интерфейса EventKit недоступны для расширений приложений.

[курсив добавлен.]

person cbowns    schedule 17.10.2014