SDKApplicationDelegate 使用未解析的标识符

Posted

技术标签:

【中文标题】SDKApplicationDelegate 使用未解析的标识符【英文标题】:SDKApplicationDelegate Use of unresolved identifier 【发布时间】:2019-05-15 08:52:13 【问题描述】:

我为 Facebook 登录安装了两个 pod

pod 'FacebookCore'
pod 'FacebookLogin'

比在 appdelegate 中导入 FacebookCore。仍然显示使用未解决的标识符错误。

我也在 info.plist 中实现了标签

<array>
<string>fb---------</string>
</array>
<key>FacebookAppID</key>
<string>-----------</string>
<key>FacebookDisplayName</key>
<string>-----------</string>

仍然无法获取 SDKApplicationDelegate。

func application(_ app: UIApplication, open url: URL,
                 options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool 
    if SDKApplicationDelegate.shared.application(app, open: url, options: options) 
        return true
    
    return false

【问题讨论】:

代替答案,你的问题解决了我的问题,谢谢:) 【参考方案1】:

因为SDKApplicationDelegate改成了ApplicationDelegate

func application(_ app: UIApplication, open url: URL,
                 options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool 
    if ApplicationDelegate.shared.application(app, open: url, options: options) 
        return true
    
    return false

还有一件事要做

class AppDelegate: UIResponder, UIApplicationDelegate

同时导入这两个 pod

import FBSDKCoreKit
import FBSDKLoginKit 

【讨论】:

我得到的错误是......使用未解析的标识符'ApplicationDelegate';你的意思是“UIApplicationDelegate”吗?将“ApplicationDelegate”替换为“UIApplicationDelegate” 这个返回语句对所有应用切换都有效吗?我有谷歌,linkedIn,脸书。所以这仅适用于 facebook 或所有这些? @KrutikaSonawala....是的,请看这个***.com/questions/35510410/… 感谢您的帮助。不知道为什么 facebook 没有快速入门指南【参考方案2】:

详情

Xcode 版本 10.3 (10G8) 斯威夫特 5 FacebookCore (0.7.0)

解决方案

只需将SDKApplicationDelegate 替换为ApplicationDelegate

代码

import FacebookCore

//....

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
    ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)

    return true


//....

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool 
    guard let urlScheme = url.scheme else  return false 
    if urlScheme.hasPrefix("fb") 
        return ApplicationDelegate.shared.application(app, open: url, options: options)
    
    return true

【讨论】:

截至 2019 年 7 月,此功能与 swift 5 一致。谢谢!【参考方案3】:

为了能够让facebook登录添加这两种方法

func application(_ app: UIApplication,open url: URL,options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool

    if #available(ios 9.0, *) 
        let sourceApplication: String? = options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String
        return FBSDKApplicationDelegate.sharedInstance().application(app, open: url,sourceApplication: sourceApplication, annotation: nil)
    

    return true


func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool 

    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url as URL?, sourceApplication: sourceApplication, annotation: annotation)


import FBSDKCoreKit

import FBSDKLoginKit

【讨论】:

这个错误是:使用未解析的标识符'FBSDKApplicationDelegate';你的意思是“UIApplicationDelegate”吗?将“FBSDKApplicationDelegate”替换为“UIApplicationDelegate” 导入将转换与上述答案相同的代码。所以这行得通。

以上是关于SDKApplicationDelegate 使用未解析的标识符的主要内容,如果未能解决你的问题,请参考以下文章

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”