У меня есть универсальное приложение для iOS, которое ссылается на HealthKit. Когда приложение установлено на iPhone, приложение использует HKHealthStore для извлечения данных о здоровье, а когда оно находится на iPad, я пропускаю запросы HealthKit, проверяя, является ли HKHealthStore.isHealthDataAvailable ложным. Это все работает хорошо, но для того, чтобы приложение запускалось на iPad, мне нужно удалить запись «healthkit» из .plist моего приложения в разделе «Обязательные возможности устройства». Это делает из-за того, что iPad не имеет healthkit на нем, поэтому он требует, чтобы приложение не устанавливалось на iPad. Все это уже сделано в приложении, которое я отправил в магазин приложений, и был одобрен.HKHealthStore предпочтительные устройства не поддерживаются для универсальных приложений?
Теперь я делаю обновление приложения, и я хочу показать настройки устройства, которые пользователь может настроить вручную в приложении «Здоровье». В документации для HKHeathStore говорится, что вы можете сделать это, используя метод preferredUnitsForQuantityTypes. Однако, называя этот метод из моего приложения iPhone дает мне следующее сообщение об ошибке:
Error Domain=com.apple.healthkit Code=4 "Missing com.apple.developer.healthkit entitlement." UserInfo={NSLocalizedDescription=Missing com.apple.developer.healthkit entitlement.}
Кроме меня есть healthkit право в моем идентификатор приложения уже. Если я добавлю вкладку «healthkit» в разделе «Обязательные параметры устройства» моего .plist, эта ошибка исчезнет, и я получу желаемые результаты. Но это не решение для меня, потому что тогда я не могу установить приложение на iPad.
Мой вопрос в том, как я могу поддержать универсальное приложение, где версия iPhone может сделать успешный вызов HKHealthStore.preferredUnitsForQuantityTypes?
EDIT Вот как выглядит мой файл .entitlements как:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.healthkit</key>
<true/>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.mycompany.myapp</string>
</array>
</dict>
</plist>
Извините, но мой первый ответ был основан на неправильном чтении вашего вопроса. Каковы точные шаги, которые вы предприняли для удаления «healthkit» из «Необходимые возможности устройства»? – Allan
Я зашел в файл .plist моего приложения и под заголовком UIRequiredDeviceCapabilities . Я удалил запись healthkit . Это единственный способ, которым я обнаружил, что приложение, которое ссылается на HealthKit, может быть действительно установлено на iPad (даже если код iPad не использует HealthKit). –
lehn0058
Звучит правильно. Каково содержимое файла ваших прав. – Allan