Ответ 1
Я предлагаю следовать инструкциям от Facebook, чтобы подготовить приложение для iOS 9: https://developers.facebook.com/docs/ios/ios9
- Загрузите последнюю версию Facebook SDK для iOS
Загрузите соответствующую версию SDK для своего приложения.
v4.x - Рекомендуется. v3.24.0 - Только если вы еще не перенести на v4.x SDK. 2. Whitelist Facebook Servers для сетевых запросов
Если вы скомпилируете приложение с помощью iOS SDK 9.0, на него повлияет App Transport Security. В настоящее время вам нужно будет переадресовывать домены Facebook в ваше приложение, добавив в свой прикладной план следующее:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
или вы столкнетесь с ошибками, например:
NSUnderlyingError=0x7f88f9436eb0 {Error Domain=kCFErrorDomainCFNetwork
Code=-1200 "An SSL error has occurred and a secure connection to
the server cannot be made." UserInfo={NSErrorFailingURLStringKey=
https://graph.facebook.com/v2.4, NSLocalizedRecoverySuggestion=
Would you like to connect to the server anyway?,
_kCFNetworkCFStreamSSLErrorOriginalValue=-9802,
kCFStreamPropertySSLPeerCertificates=<CFArray 0x7f88f9536e00
[0x10719f7c0]>{type = immutable, count = 2, values = (
0 : <cert(0x7f88f963f840) s: *.facebook.com (http://facebook.com/)
i: DigiCert High Assurance CA-3>
1 : <cert(0x7f88f96444c0) s: DigiCert High Assurance CA-3 i:
DigiCert High Assurance EV Root CA> )},
_kCFStreamPropertySSLClientCertificateState=0,
kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x7f88f9644d10>,
NSLocalizedDescription=An SSL error has occurred and a secure connection
to the server cannot be made.,_kCFStreamErrorDomainKey=3,
NSErrorFailingURLKey=https://graph.facebook.com/v2.4,
_kCFStreamErrorCodeKey=-9802}}
- Whitelist Facebook Apps
Если вы используете любой из диалогов Facebook (например, Login, Share, App Invites и т.д.), которые могут выполнять переход к приложениям Facebook, вам необходимо обновить свой прикладной план для обработки изменений в canOpenURL, описанных в https://developer.apple.com/videos/wwdc/2015/?id=703
Если вы перекомпилируете с iOS SDK 9.0, добавьте следующее в свой прикладной уровень, если вы используете версию SDK v4.5 или старше:
<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>
Если вы используете FBSDKMessengerShareKit из версий старше версии v4.6, добавьте
<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>
Если вы используете v4.6.0 SDK, вам нужно только добавить:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Это позволит интеграции FacebookSDK правильно идентифицировать установленные приложения Facebook для выполнения переключения приложения. Если вы не перекомпилируете IOS SDK 9.0, ваше приложение ограничено 50 различными схемами (вызовы canOpenURL впоследствии возвращают NO).