KeychainItemWrapper导致分发iOS版本崩溃

时间:2016-05-12 19:05:45

标签: ios objective-c keychainitemwrapper

在我的iOS应用中,我使用Apple提供的KeychainItemWrapper来保存我应用的一些重要数据。

当我使用开发人员配置文件在移动设备上部署应用程序时,应用程序正常运行,但是当我通过使用“分发”配置文件应用程序崩溃创建分发版本来部署相同的应用程序时。

我分析了设备日志但无法找出问题。它崩溃了“writeToKeyChain”方法。我无法找出为什么这只发生在分发配置文件中。

任何想法为什么会这样?以前有人遇到过这个问题吗?

iOS : 9.3.1
Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY


  CoreFoundation                    0x1817fee38 __exceptionPreprocess + 124
1   libobjc.A.dylib                 0x180e63f80 objc_exception_throw + 56
2   CoreFoundation                  0x1817fed08 +[NSException raise:format:arguments:] + 108
3   Foundation                      0x182184124 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 112
4   MyApp                           0x10017fe6c -[KeychainItemWrapper writeToKeychain] (KeychainItemWrapper.m:328)
5   MyApp                           0x10017f1c4 -[KeychainItemWrapper setObject:forKey:] (KeychainItemWrapper.m:177)
6   MyApp                           0x1000c61cc +[MyKeyChainWrappper fetchInfo:] (MyKeyChainWrappper.m:41)

编辑:

KeychainItemWrapper初始化代码

 KeychainItemWrapper* mykeyChain = [[KeychainItemWrapper alloc]    initWithIdentifier:@"My_Identifier" accessGroup:[[NSBundle mainBundle]    bundleIdentifier]];


  [mykeyChain setObject:(__bridge id)(kSecAttrAccessibleWhenUnlocked) forKey:(__bridge id)(kSecAttrAccessible)];

1 个答案:

答案 0 :(得分:0)

您的问题出在您的访问组中。您正在使用ini_set('session.name', 'SESSION'); session_set_cookie_params((60*60*2), "/", "hexrblx.com", TRUE); session_start(); 。那不是有效的访问组。您的访问组必须以AppID开头。您可以对此进行硬编码(就像在[[NSBundle mainBundle] bundleIdentifier]示例代码中一样),也可以query it at runtime