Получение ошибки в классе FBSDKApplicationDelegate

Я получаю сообщение об ошибке при создании моего проекта xCode 7.3.1.

/Pods/FBSDKCoreKit/FBSDKCoreKit/FBSDKCoreKit/FBSDKApplicationDelegate.h:77:35: Нет типа или протокола с именем 'UIApplicationOpenURLOptionsKey'

Ошибка в функции:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;

Нужна ваша помощь! спасибо..

Ответ 1

Последний FBSDKCoreKit не работает с Xcode 7.3. Вы должны использовать XCode 8 или более старые версии фреймворка Facebook.

 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

был заменен в XCode 8 как

 - (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
        options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;

Попробуйте вместо этого использовать SDK в facebook

https://origincache.facebook.com/developers/resources/?id=FacebookSDKs-iOS-4.14.0.zip

Для получения дополнительной информации об изменениях с iOS с 9 по 10, перейдите по этой ссылке https://developer.apple.com/library/content/releasenotes/General/iOS10APIDiffs/Objective-C/UIKit.html

Ответ 2

Вместо этого кода:

- (BOOL)application:(UIApplication *)application 
            openURL:(NSURL *)url 
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

  BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
    openURL:url
    sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
  ];
  // Add any custom logic here.
  return handled;
}

Используйте этот код:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                        openURL:url
                                              sourceApplication:sourceApplication
                                                     annotation:annotation
          ];
}

Ответ 3

Попробуйте этот код:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

    return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url options:options];

}