2016-04-08 2 views
2

Я использую последнюю версию FBSDKLoginKit (4.10.1), чтобы мои пользователи могли аутентифицироваться с помощью Facebook. Он отлично работает на iOS 9, но не на iOS 8. Когда пользователь аутентифицируется, приложение переключается либо на собственное приложение facebook, либо на сафари для входа в систему. При входе в систему приложение переключается обратно в мое приложение, но потом ничего не происходит. Блок обработчика не выполняется. Точный же код работает на iOS 9, но не на 8. Я заметил, что когда мое приложение переключается на сафари для аутентификации, отладчик xcode отсоединяется от симулятора; поэтому я не могу обнаружить никаких ошибок. Этого не происходит на прошивкой 9.Facebook Войти на iOS 8; Приложение не работает после входа в систему.

Это мой код для входа в систему:

@IBAction func login(sender: AnyObject) { 

    let facebookLogin = FBSDKLoginManager() 

    facebookLogin.logInWithReadPermissions(["public_profile", "email", "user_friends"], fromViewController: self, handler: { 
     (facebookResult, facebookError) -> Void in 

     // some logic which isn't executed 
    }) 
} 

Это мой info.plist:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>en</string> 
    <key>CFBundleExecutable</key> 
    <string>$(EXECUTABLE_NAME)</string> 
    <key>CFBundleIdentifier</key> 
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>$(PRODUCT_NAME)</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleShortVersionString</key> 
    <string>0.1</string> 
    <key>CFBundleSignature</key> 
    <string>????</string> 
    <key>CFBundleURLTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleURLSchemes</key> 
      <array> 
       <string>fb190918247921312</string> 
      </array> 
     </dict> 
    </array> 
    <key>CFBundleVersion</key> 
    <string>5</string> 
    <key>FacebookAppID</key> 
    <string>190918247921312</string> 
    <key>FacebookDisplayName</key> 
    <string>RegelBaas</string> 
    <key>LSRequiresIPhoneOS</key> 
    <true/> 
    <key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
      <key>akamaihd.net</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
       <false/> 
      </dict> 
      <key>facebook.com</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
       <false/> 
      </dict> 
      <key>fbcdn.net</key> 
      <dict> 
       <key>NSIncludesSubdomains</key> 
       <true/> 
       <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> 
       <false/> 
      </dict> 
     </dict> 
    </dict> 
    <key>UIAppFonts</key> 
    <array> 
     <string>Stackyard_PERSONAL_USE.ttf</string> 
    </array> 
    <key>UIApplicationExitsOnSuspend</key> 
    <true/> 
    <key>UILaunchStoryboardName</key> 
    <string>LaunchScreen</string> 
    <key>UIMainStoryboardFile</key> 
    <string>Main</string> 
    <key>UIRequiredDeviceCapabilities</key> 
    <array> 
     <string>armv7</string> 
    </array> 
    <key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
    </array> 
    <key>LSApplicationQueriesSchemes</key> 
    <array> 
     <string>fbapi</string> 
     <string>fbapi20130214</string> 
     <string>fbapi20130410</string> 
     <string>fbapi20130702</string> 
     <string>fbapi20131010</string> 
     <string>fbapi20131219</string> 
     <string>fbapi20140410</string> 
     <string>fbapi20140116</string> 
     <string>fbapi20150313</string> 
     <string>fbapi20150629</string> 
     <string>fbauth</string> 
     <string>fbauth2</string> 
     <string>fb-messenger-api20140430</string> 
    </array> 
</dict> 
</plist> 

И это мой AppDelegate:

// 
// AppDelegate.swift 
// RegelBaas 
// 
// Created by J. Weijland on 12-12-15. 
// Copyright © 2015 J. Weijland. All rights reserved. 
// 

import UIKit 
import FBSDKCoreKit 
import FBSDKLoginKit 
import Batch 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     // Styling 

     UINavigationBar.appearance().barTintColor = UIColor(red: 1.0, green: (102/255), blue: (102/255), alpha: 1) 

     UINavigationBar.appearance().tintColor = UIColor.whiteColor() 

     FBSDKApplicationDelegate.sharedInstance() 
      .application(application, didFinishLaunchingWithOptions: launchOptions) 

     return true 
    } 

    func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 
    { 
     return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) 
    } 

    func applicationDidBecomeActive(application: UIApplication) { 
     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
     FBSDKAppEvents.activateApp() 
    } 

    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 
    { 

    } 
} 

Я думаю, что что-то не так с моим appdelegate, потому что я думаю, что мое приложение не распознает back-switch из сафари/FB родной для моего приложения. Странно, что все отлично работает в iOS 9!

  • С «работой на iOS 9» Я имею в виду, что он работает на устройстве на iOS 9. Я компилирую с iOS SDK 9.2.
+0

У вас есть решение проблемы? – viral

+0

Да, я удалил ' UIApplicationExitsOnSuspend ' от plist. В этой строке приложение «перезагрузилось» каждый раз, когда приложение переключается на Safari и обратно. Вот почему отладчик тоже отделился. –

+0

У меня такая же проблема, но у меня нет такого ключа в plist. У кого-нибудь еще есть решение? Он работает на iOS 9 и iOS10, но на iOS8 – Ted

ответ

0

Как я уже говорил в предыдущих комментариях:

(Да), я удалил UIApplicationExitsOnSuspend из PLIST. Эта строка сделала мое приложение «сбрасыванием» каждый раз, когда приложение переключилось на Safari и обратно. Вот почему отладчик тоже отделился.

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