Перейти к содержанию
Fire Monkey от А до Я
  • 0

[iOS] [iOS10] Приложение падает при использовании камеры в iOS 10 64 bit


Kitty

Вопрос

Пустое приложение. Код из документации. Попытка получить фото с камеры:

void __fastcall TForm1::TakePhotoFromCameraAction1DidFinishTaking(TBitmap *Image)
{
 Image1->Bitmap->Assign(Image);
}

При нажатии на кнопку приложение вылетает. Кому нибудь удавалось получить фото в С++ Builder Берлин в iOS? Спасибо.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Здравствуйте.
Попробовала Ваш пример. При нажатии на кнопку приложение упало.
Стенд:
Windows 7 RAD Berlin Up1 -> MacBook Pro OS XEI Capitan 10.11.6 -> iPhone 5
Вот, что я вижу в опциях SDK. Может тут что-то не так?

sdk.jpg

Ссылка на комментарий
  • 0
13 часов назад, Kitty сказал:

Здравствуйте.
Попробовала Ваш пример. При нажатии на кнопку приложение упало.
Стенд:
Windows 7 RAD Berlin Up1 -> MacBook Pro OS XEI Capitan 10.11.6 -> iPhone 5
Вот, что я вижу в опциях SDK. Может тут что-то не так?

sdk.jpg

попробуйте удалить sdk 8.4 и загрузить 10 

Ссылка на комментарий
  • 0

В целом удалось перевести проект с TBeacon из андроид в iOS. Однако камера, обращение к галереи не работают. Короче не работает все что связано с TActionList. Жуть...

Ссылка на комментарий
  • 0
  • Администраторы
Только что, Kitty сказал:

В целом удалось перевести проект с TBeacon из андроид в iOS. Однако камера, обращение к галереи не работают. Короче не работает все что связано с TActionList. Жуть...

Если вручную вызвать получение фотки с камеры работает?

Ссылка на комментарий
  • 0

Попробовал этот пример. Правда там ошибка:

void __fastcall DoMessageListener(const TObject *Sender, TMessage const *M);

А надо для компиляции:

void __fastcall DoMessageListener(const TObject *Sender, TMessageBase const *M);

Однако приложение при нажатии на кнопку снова выпало. Странно...

Ссылка на комментарий
  • 0

Большое спасибо! Проверти, пожалуйста, также открытие галереии с фотографиями и вызов окна поделиться  sharesheet. Это стандартные примеры с одной строчкой кода. Спасибо.

Ссылка на комментарий
  • 0
  • Администраторы

Так, проблему изучил. Решение очень простое. Начиная с iOS10 приложение, если хочет использовать камеру, библиотеку и другие сторонние сервисы, должно добавлять в манифест специальные ключи. Для камеры и библиотеки эти ключи изображены ниже:

2016-10-07_16-09-53.png

Добавьте эти ключи и все будет ок.

Подробнее про ключи можно прочитать тут: Cocoa Keys

Ссылка на комментарий
  • 0

Ранее обсуждалось тут: http://fire-monkey.ru/topic/3240-ios-ios10-приложение-падает-при-использовании-камеры-в-ios-10/?sortby=date&page=3

С чем может быть связано, что при обращении к камере и галереи, приложение на 64 bit падает.

Флаги прописаны везде. Для 32 bit все работает.

С++ Builder 10.1 Up.1 Телефон iPhone 5.

Спасибо.

123.jpg

Изменено пользователем ZuBy
Объединил темы
Ссылка на комментарий
  • 0

Да на iPnone 5 - 32 бит.

Но я поставила галочку для совместимости кода и ожидала адекватного поведения приложения.Приложение запускается, все работает, кроме камеры и галереи.

Ссылка на комментарий
  • 0

в папке проект\iOSDevice64\Release есть файл проект.info.plist

и в нем есть строки из Version Info:

    <key>NSPhotoLibraryUsageDescription </key>
    <string>To choose photo</string>
    <key>NSCameraUsageDescription </key>
    <string>Get photo</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>iBeacon detection</string>

Может этот файл необходимо принудительно добавить в проект через Project Manager ?

Спасибо

Ссылка на комментарий
  • 0
  • Модераторы
2 минуты назад, Kitty сказал:

в папке проект\iOSDevice64\Release есть файл проект.info.plist

и в нем есть строки из Version Info:

    <key>NSPhotoLibraryUsageDescription </key>
    <string>To choose photo</string>
    <key>NSCameraUsageDescription </key>
    <string>Get photo</string>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>iBeacon detection</string>

Может этот файл необходимо принудительно добавить в проект через Project Manager ?

Спасибо

нет, этот файл итак зашит в файле. ищите проблему в другом

Ссылка на комментарий
  • 0

На получение фотографии из галереи одна строчка кода:

void __fastcall TFormCamera::TakePhotoFromLibraryAction1DidFinishTaking(TBitmap *Image)
{
 Image1->Bitmap->Assign(Image);
}

На 32 bit работает, а на 64 bit приложение вываливается  в тот момент, когда возникает окно разрешить доступ к галереи. На что все таки обратить внимание? Спасибо.

Ссылка на комментарий
  • 0

Правильно ли я поняла, что надо дать ключу другое имя, например для камеры будет Privacy - Camera usage description исходя из этой ссылки:

http://stackoverflow.com/questions/39465687/nscamerausagedescription-in-ios-10-0-runtime-crash/39488067#39488067

Цитата

I have the same issue, added the NSCameraUsageDescription in info.plist, but still crashes with the same message. Have you managed to solve it?

 

You have to add this below key in info.plist.

Privacy - Camera usage description

или для RAD проектов это переименование не подходит?

Изменено пользователем Kitty
Ссылка на комментарий
  • 0

Переименование не к чему не приводит.

В 64 bit приложении когда пытаюсь воспользоваться галереей или сделать фото, то приложение не всегда падает, иногда выдает:

Error: Invalid class typecast

Ссылка на комментарий
  • 0

Замена TActionList кодом в 64 битном приложении тоже не помогла:

http://docwiki.embarcadero.com/RADStudio/XE8/en/Taking_Pictures_Using_FireMonkey_Interfaces

чего то проекту 64 bit не хватает...

Изменено пользователем Kitty
Ссылка на комментарий
  • 0

Последовательность действий (на стенде EL Capitan):

1. Деплоим на телефон 32 битную версию в релизе.

2. При обращении к галерее/фото видим окно с просьбой разрешить обращение к галереи. Соглашаемся. Все работает.

3. Деплоим поверх версию в 64 бита тоже в релизе. При обращении к галерее никаких запросов уже нет и все также четко работает.

4. Полностью удаляем приложение с устройства.

5. Деплоим начисто 64 битную версию. При обращении к галереи приложение сразу падает.

Видимо откомпилированный 64 битный код не может вызвать окно запроса с разрешением использовать галерею/фото.

Что еще можно попробовать т.к. для публикации в app store требуется именно 64 битная версия приложения?

 

Ссылка на комментарий
  • 0

Дополнительно выяснилось, что если деплоить в режиме дебаг 64 bit, то все работает. Если деплоить в режиме релиз, то приложение падает при обращении к фото/галереи.

Ключи в обоих конфигурациях одинаковые...

 

Изменено пользователем Kitty
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...