2015-01-03 3 views
0

У меня есть приложение в магазине, в котором используется LiveSDK API для входа пользователя в OneDrive. Последняя версия была нажата до выхода iOS8, но она работает без проблем с iOS8ios 8 + проверка подлинности LiveSDK мое приложение

Теперь я хочу нажать обновление (не связанное с функциями OneDrive), и я использую xcode 6.1.1, но при тестировании приложения я заметил, что каждый время, когда пользователь аутентифицируется в OneDrive, приложение выйдет из строя, как только будет возвращено из режима segue или flipside в Main View.

Я был в состоянии изолировать вопрос к этой линии добавлены в viewDidLoad:

self.liveClient = [[LiveConnectClient alloc] initWithClientId:APP_CLIENT_ID 
                  delegate:self 
                  userState:@"initialize"]; 

и я действительно следовал основные инструкции о том, как войти в систему, которую можно найти здесь:

http://msdn.microsoft.com/en-us/library/dn631822.aspx#sign_the_user_in

. Действия по воспроизведению проблемы (как на вашем устройстве, так и на симуляторе):

a) Заявление о запуске b) нажмите кнопку входа в облачную службу, которая вызовет диспетчер flipsideviewcontroller c) войдите в OneDrive с кодом, предоставленным MS d) вернитесь к главному контроллеру e) CRASH!

Трассировка заключается в следующем:

######################################################### 
*** First throw call stack: 
(
    0 CoreFoundation      0x028dd1e4 __exceptionPreprocess + 180 
    1 libobjc.A.dylib      0x026598e5 objc_exception_throw + 44 
    2 CoreFoundation      0x0297a243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 
    3 CoreFoundation      0x028cd50b ___forwarding___ + 1019 
    4 CoreFoundation      0x028cd0ee _CF_forwarding_prep_0 + 14 
    5 CloudFella       0x0015c867 -[LiveConnectClientCore dealloc] + 48 
    6 libobjc.A.dylib      0x0266a692 _ZN11objc_object17sidetable_releaseEb + 268 
    7 libobjc.A.dylib      0x0266baeb -[NSObject release] + 25 
    8 CloudFella       0x00158af1 -[LiveConnectClient dealloc] + 44 
    9 libobjc.A.dylib      0x0266a692 _ZN11objc_object17sidetable_releaseEb + 268 
    10 libobjc.A.dylib      0x02669e81 objc_release + 49 
    11 libobjc.A.dylib      0x02669e3e objc_storeStrong + 39 
    12 CloudFella       0x00157b9d -[CFFlipsideViewController .cxx_destruct] + 249 
    13 libobjc.A.dylib      0x026582d4 _ZL27object_cxxDestructFromClassP11objc_objectP10objc_class + 128 
    14 libobjc.A.dylib      0x0265824f object_cxxDestruct + 20 
    15 libobjc.A.dylib      0x0266327a objc_destructInstance + 48 
    16 libobjc.A.dylib      0x026632ab object_dispose + 20 
    17 UIKit        0x01433d1a -[UIViewController dealloc] + 1854 
    18 UIKit        0x01430915 -[UIViewController release] + 89 
    19 libobjc.A.dylib      0x02669e97 objc_release + 71 
    20 libobjc.A.dylib      0x02656bf0 objc_setProperty_nonatomic + 48 
    21 UIKit        0x01a6167d -[_UIViewControllerOneToOneTransitionContext _setFromViewController:] + 47 
    22 UIKit        0x01a61490 -[_UIViewControllerOneToOneTransitionContext dealloc] + 43 
    23 libobjc.A.dylib      0x0266a692 _ZN11objc_object17sidetable_releaseEb + 268 
    24 libobjc.A.dylib      0x0266baeb -[NSObject release] + 25 
    25 UIKit        0x01a60834 -[_UIViewControllerTransitionContext completeTransition:] + 135 
    26 UIKit        0x01a7a5b1 -[UIViewControllerBuiltinTransitionViewAnimator transitionViewDidComplete:fromView:toView:removeFromView:] + 50 
    27 UIKit        0x01416137 -[UITransitionView notifyDidCompleteTransition:] + 345 
    28 UIKit        0x01415e61 -[UITransitionView _didCompleteTransition:] + 1333 
    29 UIKit        0x014181b7 -[UITransitionView _transitionDidStop:finished:] + 107 
    30 UIKit        0x013666dc -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 267 
    31 UIKit        0x013669c8 -[UIViewAnimationState animationDidStop:finished:] + 80 
    32 QuartzCore       0x00fd6bb4 _ZN2CA5Layer23run_animation_callbacksEPv + 304 
    33 libdispatch.dylib     0x0326b4d0 _dispatch_client_callout + 14 
    34 libdispatch.dylib     0x03259726 _dispatch_main_queue_callback_4CF + 340 
    35 CoreFoundation      0x0294243e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14 
    36 CoreFoundation      0x028835cb __CFRunLoopRun + 1963 
    37 CoreFoundation      0x028829d3 CFRunLoopRunSpecific + 467 
    38 CoreFoundation      0x028827eb CFRunLoopRunInMode + 123 
    39 GraphicsServices     0x0301f5ee GSEventRunModal + 192 
    40 GraphicsServices     0x0301f42b GSEventRun + 104 
    41 UIKit        0x01316f9b UIApplicationMain + 1225 
    42 CloudFella       0x000eeea6 main + 94 
    43 libdyld.dylib      0x034af6d9 start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
#

Если я вхожу в других облачных сервисов, доступных в мое приложение (Google диск, Dropbox, Evernote) У меня нет проблем вообще.

Проблема связана с старым API LiveSDK (тот, который включен в текущий хороший выпуск в магазине), и новая версия (2 месяца), добавленная в приложение, для решения некоторых проблем проверки, описанных здесь: https://github.com/liveservices/LiveSDK-for-iOS/issues/43

Я подозреваю, что переход от Xcode 5 к xcode 6 что-то изменилось в параметрах здания, вызывающих проблему, однако я не уверен, где проблема и как обходиться.

В качестве теста я принудительно создал приложение только для 32-битных архитектур, но он также разбился: это ожидалось, так как API LiveSDK совместим с 64-битной архитектурой, но, конечно же, хотел попробовать ....

Любая помощь очень ценится.

Спасибо, дом

ответ

1

Оказывается, это может быть действительно ошибка на liveSDK.

Открыт следующий вопрос:

https://github.com/liveservices/LiveSDK-for-iOS/issues/53

, а другой пользователь API (https://github.com/sylverb), который врезался в тот же вопрос дал мне хорошее решение, пока ошибка не будет устранена:

«Это был сбой из-за «[authRefreshRequest cancel];» в методе release LiveConnectClientCore.m. У меня было временное исправление, добавив «self» в эту строку в методе refreshSessionWithDelegate (также в LiveConnectClientCore.м.):

self.authRefreshRequest = [[[LiveAuthRefreshRequest alloc] initWithClientId:_clientId 
                    scope:_scopes 
                   refreshToken:refreshToken 
                    delegate:delegate 
                   userState:userState 
                   clientStub:self] 
          autorelease]; 

"

Закрытие пост решенной, так как обходной путь предоставляется, и я добавил ссылку на открытую жука открыта для любого другого пользователя, который хочет, чтобы следить за этим вопросом

Смежные вопросы