Перейти к содержанию
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 пользователей онлайн

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