Вход в Facebook IOS SDK работает на симуляторе, а не на устройстве

Вход через Facebook, я попал в неловкое положение.

К сожалению, для работы, которую я делаю, у меня есть доступ только к Snow Leopard с xcode 3.2.6, и я не могу изменить его. Взрыв из прошлого, который я знаю.

Чтобы заставить работать вход в Facebook с помощью FB SDK 3.0, я использовал:

AppDelegate.h:

     #import <FacebookSDK/FacebookSDK.h>
....
    @property (retain, nonatomic) FBSession *session;

AppDelegate.m:

@synthesize session = _session;
...
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation { 
     return [self.session handleOpenURL:url];
}

Затем в моем FBLoginViewController.m viewDidLoad:

MyAppDelegate *appDelegate;
appDelegate = [[UIApplication sharedApplication]delegate];

   if (!appDelegate.session.isOpen) {
       appDelegate.session = [[FBSession alloc] init]; 

       if (appDelegate.session.state == FBSessionStateCreatedTokenLoaded) {
         [appDelegate.session openWithCompletionHandler:^(FBSession *session, 
                                                       FBSessionState status, 
                                                              NSError *error) {
                }];
            }
      } 

Теперь это работало на симуляторе 4.3. Я думаю, подтверждая, что у меня правильно установлен идентификатор приложения fb в plist, правильно настроено приложение и т. Д.

Однако при тестировании на устройстве с IOS 6 происходит сбой с соответствующими разделами журнала сбоев, в котором говорится:

Exception Type:  EXC_CRASH (SIGSYS)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   MyApp                       0x000e7cac 0x59000 + 584876
1   libdispatch.dylib               0x34a384b4 0x34a37000 + 5300
2   libdispatch.dylib               0x34a39836 0x34a37000 + 10294
3   MyApp                       0x000e7ca0 0x59000 + 584864
4   MyApp                           0x000d9d08 0x59000 + 527624
5   MyApp                           0x000d9934 0x59000 + 526644
6   MyApp                           0x000da6c6 0x59000 + 530118
7   MyApp                           0x0005b1f0 0x59000 + 8688
8   MyApp                           0x000660a4 0x59000 + 53412
9   UIKit                           0x336130a0 0x33525000 + 975008
10  UIKit                           0x33613052 0x33525000 + 974930
11  UIKit                           0x33613030 0x33525000 + 974896
12  UIKit                           0x336128e6 0x33525000 + 973030
13  UIKit                           0x33612ddc 0x33525000 + 974300
14  UIKit                           0x3353b5ec 0x33525000 + 91628
15  UIKit                           0x335287fc 0x33525000 + 14332
16  UIKit                           0x33528116 0x33525000 + 12566
17  GraphicsServices                0x382ab5a0 0x382a5000 + 26016
18  GraphicsServices                0x382ab1ce 0x382a5000 + 25038
19  CoreFoundation                  0x3331c170 0x33285000 + 618864
20  CoreFoundation                  0x3331c112 0x33285000 + 618770
21  CoreFoundation                  0x3331af94 0x33285000 + 614292
22  CoreFoundation                  0x3328deb8 0x33285000 + 36536
23  CoreFoundation                  0x3328dd44 0x33285000 + 36164
24  GraphicsServices                0x382aa2e6 0x382a5000 + 21222
25  UIKit                           0x3357c2f4 0x33525000 + 357108
26  MyApp                       0x0005b012 0x59000 + 8210
27  MyApp                       0x0005afc8 0x59000 + 8136
Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x0000004e    r1: 0x00000000      r2: 0x00000000      r3: 0x00000000
    r4: 0x3b091bd0    r5: 0x2fda7c0c      r6: 0x1cd560e0      r7: 0x2fda6734
    r8: 0x00000000    r9: 0x2fda6764     r10: 0x1cd560e0     r11: 0x1cdac4d0
    ip: 0x000e7c0d    sp: 0x2fda672c      lr: 0x34a384b7      pc: 0x000e7cac
  cpsr: 0x60000010

Что я пробовал:

Теперь, очевидно, с xcode 3.2.6 я не могу запустить через xcode и получить доступ к консоли для дальнейшей отладки на моем устройстве IOS 6. Поэтому я отправил проект другу (без платной учетной записи, поэтому не могу протестировать на устройстве), который подтвердил, что он работает на xcode 4.5 и с симулятором 6.

Итак, если он работает на симуляторе 6 и 4.3, почему он не работает на устройстве IOS 6? Я немного запутался....

Поиграв (просто комментируя строки и т. д.), я думаю, что он падает в этой строке:

appdelagate.session = [[FBSession aloc] init];

Но мне трудно быть уверенным или понять, почему.

Любил бы некоторые идеи или помощь, Спасибо.


person Michael Kuiper    schedule 04.02.2013    source источник
comment
Похоже, вы недостаточно подготовлены для того, чтобы стать разработчиком iOS... купите OSX Lion, чтобы разрабатывать для iOS 6.   -  person Daniel    schedule 04.02.2013
comment
Расскажи мне об этом. Позвольте мне объяснить, у меня дома есть новый MacBook Pro, которым я обычно пользуюсь, однако меня отправили на работу на 3 месяца в глубинку Австралии, примерно в 12 часах езды от дома, и я не взял его с собой. Большая ошибка. Во всяком случае, меня спросили, не сочиню ли я программу, и мне удалось получить доступ к Mac с аппаратным обеспечением, которое может запускать только Snow Leopard. Мне нужно только иметь возможность протестировать на устройстве, пока я не вернусь домой. Должен быть способ заставить это работать, спасибо.   -  person Michael Kuiper    schedule 05.02.2013


Ответы (1)


Единственное решение, которое я смог найти, это перейти на xcode 4.2 для снежного барса. Я не знал, что xcode 4.2 подходит для снежного барса. Однако это так. Приведенный выше код работал сразу без изменений в xcode 4.2.

person Michael Kuiper    schedule 19.02.2013