Форум КриптоПро
»
Средства криптографической защиты информации
»
Apple
»
Проблема с alert сообщением из КриптоПРО фреймворка в iOS 7
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Здравствуйте, В iOS 7 я столкнулся с проблемой связанной с alert сообщением, которое вызывает КриптоПРО фрэймворк. Фреймворк показывает всплывающее сообщение, в котором просит ввести пароль для вновь созданного контейнера. У этого сообщения отсутствуют 2 поля для ввода пароля на контейнер, при нажатии на "ОК" или "Отмена" ничего не происходит (кнопки остаются нажатыми). В iOS 6.1 данная проблема не воспроизводится. Пользователь rfigurin прикрепил следующие файлы:  IMG_0214.PNG (42kb) загружен 16 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Здравствуйте, эта проблема связана с изменениями в iOS 7, она исправлена в новой версии фреймворка. Попробуйте скачать с нашего сайта из раздела загрузки сборку, которая называется "КриптоПро CSP 3.6 R4 FrameWork для iOS 5.x/6.x/7 с исправленной работой диалогов на iOS 7 (сборка 3.6.7777)". |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
У других наших партнёров и у меня работает. А может выложить проект в dropbox? Я посмотрю в чём может быть дело. |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Отправил ссылку на проект в дропбоксе электронной почтой.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Проблема следующая: Для работы нашего провайдера нужны модальные диалоги (по крайней мере диалоги запроса пароля, датчика случайных чисел и некоторые сообщения, которые выплёвывает провайдер должны быть модальными, остальное можно поменять на не модальные). Код, который используется чтобы организовать модальные диалоги выглядит так: Код:
@implementation ModalAlertDelegate
@synthesize index;
-(id) initWithRunLoop: (CFRunLoopRef)runLoop
{
if ((self = [super init]) != 0)
currentLoop = runLoop;
return self;
}
// User pressed button. Retrieve results
-(void) alertView: (UIAlertView*)aView clickedButtonAtIndex: (NSInteger)anIndex
{
index = anIndex;
CFRunLoopStop(currentLoop);
}
@end
@implementation ModalAlert
+(NSUInteger) queryWith: (NSString *)question message: (NSString *) text button1: (NSString *)button1 button2: (NSString *)button2
{
CFRunLoopRef currentLoop = CFRunLoopGetCurrent();
// Create Alert
ModalAlertDelegate *madelegate = [[ModalAlertDelegate alloc] initWithRunLoop:currentLoop];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:question message:text delegate:madelegate cancelButtonTitle:button1 otherButtonTitles:button2, nil];
[alertView show];
// Wait for response
madelegate.index = -1;
while(madelegate.index == -1)
CFRunLoopRun();
// Retrieve answer
NSUInteger answer = madelegate.index;
[alertView release];
[madelegate release];
return answer;
}
//Другие методы
@end
в поздних версиях ios7 (во всех бетах кроме последней всё было ок) CFRunLoopRun() работает не достаточно хорошо -- например если вызывать это из обработчика таблицы (didSelectRowAtIndexPath), то CFRunLoopRun() передаёт управление системе, но как-то не полностью -- окно отрисовывается, нажатие кнопок в окне отрисовывается, но clickedButtonAtIndex из делегата не вызывается. Видимо при вызове из viewDidAppear та же проблема. В нашей панели проблема решена переносом вызовов, которые могут рисовать окна в главный thread. Попробуйте в SecureConnectionManager::init заменить вызовы [self installRootCertificate] и [self installUserCertificate] на [self performSelectorOnMainThread:@selector(installRootCertificate) withObject:nil waitUntilDone:NO] и [self performSelectorOnMainThread:@selector(installUserCertificate) withObject:nil waitUntilDone:NO]. Как это решить более систематически пока не придумала. Надеюсь в новой iOS пофиксят поведение CFRunLoopRun. |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2013(UTC) Сообщений: 42  Откуда: Нижний Новгород Сказал(а) «Спасибо»: 2 раз
|
Спасибо, проблема пофикшена [self performSelectorOnMainThread...] вызовом.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Отлично. Если придумаю какое-то более систематическое решение -- напишу вам. |
Татьяна ООО Крипто-Про |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 27.04.2012(UTC) Сообщений: 119   Откуда: Digital Design Сказал «Спасибо»: 19 раз Поблагодарили: 1 раз в 1 постах
|
Здравствуйте! У меня тоже возникла проблема с алертом запроса пина в iOS 7: Валится, судя повсему, на показе алерта (в 6 айос всё нормально) на этом методе: Цитата:CryptMsgGetParam( hMsg, // Handle to the message CMSG_CONTENT_PARAM, // Parameter type 0, // Index pbEncodedBlob, // Pointer to the blob &cbEncodedBlob)) // Size of the blob
Версия крипто про 3.6.7777 Крашлог:
Цитата: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSBigMutableString replaceCharactersInRange:withString:]: nil argument' *** First throw call stack: ( 0 CoreFoundation 0x01f3b5e4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x03cad8b6 objc_exception_throw + 44 2 CoreFoundation 0x01f3b3bb +[NSException raise:format:] + 139 3 Foundation 0x036d23fe -[NSBigMutableString replaceCharactersInRange:withString:] + 117 4 Foundation 0x036d2355 -[NSConcreteMutableAttributedString replaceCharactersInRange:withAttributedString:] + 384 5 UIFoundation 0x06419954 __71-[NSConcreteTextStorage replaceCharactersInRange:withAttributedString:]_block_invoke + 68 6 UIFoundation 0x0641988f -[NSConcreteTextStorage replaceCharactersInRange:withAttributedString:] + 121 7 Foundation 0x036fcb06 -[NSMutableAttributedString setAttributedString:] + 90 8 UIKit 0x0290eec2 __65-[UIFieldEditor setAttributedText:andSetCaretSelectionAfterText:]_block_invoke + 53 9 UIFoundation 0x064173f1 -[NSTextStorage coordinateEditing:] + 48 10 UIKit 0x0290ed55 -[UIFieldEditor setAttributedText:andSetCaretSelectionAfterText:] + 151 11 UIKit 0x0290f07b -[UIFieldEditor setAttributedText:] + 48 12 UIKit 0x02ef5155 -[UITextField willAttachFieldEditor:] + 340 13 UIKit 0x0290deb5 -[UIFieldEditor becomeFieldEditorForView:] + 927 14 UIKit 0x02eec3a3 -[UITextField _becomeFirstResponder] + 160 15 UIKit 0x02967ef5 -[UIResponder becomeFirstResponder] + 400 16 UIKit 0x0286b19b -[UIView(Hierarchy) becomeFirstResponder] + 114 17 UIKit 0x02eebe43 -[UITextField becomeFirstResponder] + 51 18 UIKit 0x029ab52f -[_UIModalItemsPresentingViewController _dismissItem:andPresentItem:animated:completion:keepDimmingView:] + 1218 19 UIKit 0x029ad9f7 -[_UIModalItemsPresentingViewController _dismissItem:andPresentItem:animated:completion:] + 70 20 UIKit 0x02dbc5d5 -[_UIModalItemsCoordinator _presentItem:replacingItem:inViewController:animated:] + 1746 21 UIKit 0x02b8c78b -[UIViewController(UIModalItemPresentationSupport) presentModalItem:replacing:animated:dontPresentAndAddToStack:] + 132 22 UIKit 0x02b8c85c -[UIViewController(UIModalItemPresentationSupport) presentModalItem:animated:] + 64 23 UIKit 0x02cf0804 -[UIAlertView(Private) popupAlertAnimated:animationType:atOffset:] + 1094 24 UIKit 0x02cf0963 -[UIAlertView(Private) popupAlertAnimated:animationType:] + 56 25 UIKit 0x02cf5948 -[UIAlertView showWithAnimationType:] + 48 26 UIKit 0x02cf5976 -[UIAlertView show] + 41 27 AFK 0x000c7c3b -[ModalAlertDelegate show] + 75 28 AFK 0x000c8118 +[ModalAlert queryWithFields:message:button1:button2:out1:secure:] + 344 29 AFK 0x000c7faf +[ModalAlert queryField:message:out1:secure:] + 95 30 AFK 0x000c5443 -[iOSMainThreadWindows queryPINMainThread:] + 227 31 libobjc.A.dylib 0x03cbf81f -[NSObject performSelector:withObject:] + 70 32 Foundation 0x036f59d8 __NSThreadPerformPerform + 285 33 CoreFoundation 0x01ec483f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 34 CoreFoundation 0x01ec41cb __CFRunLoopDoSources0 + 235 35 CoreFoundation 0x01ee129e __CFRunLoopRun + 910 36 CoreFoundation 0x01ee0ac3 CFRunLoopRunSpecific + 467 37 CoreFoundation 0x01ee08db CFRunLoopRunInMode + 123 38 GraphicsServices 0x048259e2 GSEventRunModal + 192 39 GraphicsServices 0x04825809 GSEventRun + 104 40 UIKit 0x0280ed3b UIApplicationMain + 1225 41 AFK 0x00002582 main + 130 42 libdyld.dylib 0x0419470d start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException
|
ВАСИЛИЙ АНИСИМОВ Ведущий iOS разработчик в «Digital Design» www.digdes.ru |
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.02.2008(UTC) Сообщений: 1,491 Откуда: Крипто-Про
Поблагодарили: 40 раз в 37 постах
|
Здравствуйте. У меня эта функция нормально работает, но в ios7 бывают нюансы (например, всё может зависеть от того, откуда конкретно этот код вызывается). Пришлите мне проект на kondakova at cryptopro.ru , я постараюсь разобраться. |
Татьяна ООО Крипто-Про |
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Apple
»
Проблема с alert сообщением из КриптоПРО фреймворка в iOS 7
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close