找不到 GTMSessionFetcher.h 文件将应用程序升级到最新的 google-api-objectivec-client

2024-02-08

我在 iOS 应用程序中实现了对 Google Drive 的访问。自 2014 年中期以来,这一直是应用程序中的一项活跃功能,并且在 iOS 6、7 和 8 下正常运行。我目前正在检查我的项目与 iOS 9 的兼容性。

我已经下载了最新的google-api-objectivec-client确保我的项目保持最新状态。

我重新编写了标准的 Google 实现...详细信息见这一页 https://developers.google.com/drive/ios/quickstart并包含在本文末尾以确保完整性。

问题:当我尝试构建任何版本时,我收到错误“GTMSessionFetcher.h文件未找到”。

我确信我已经按照以下/Google 网页上的步骤正确实施了 API。

我查看了旧版本的代码,但不幸的是我没有备份 Google SDK,因此无法轻易判断发生了什么变化。

似乎源于此……内GTMOAuth2Authentication.h...

#if GTM_USE_SESSION_FETCHER
  #import "GTMSessionFetcher.h"
#else
  #import "GTMHTTPFetcher.h"
#endif  // GTM_USE_SESSION_FETCHER

我不明白怎么办GTM_USE_SESSION_FETCHER已设置以及为什么在这种情况下它是正确的。

任何建议都非常感激。


适用于 iOS 的 Google Drive API 实现

注意:步骤 1 和 2 顺利完成。

第三步:准备项目

  1. In Xcode, create a new project to contain the sample app:
    • 单击“文件”>“新建”>“项目”,选择“单视图应用程序”模板,然后单击“下一步”。
    • 填写产品名称、组织名称和公司标识符。确保选择 Objective-C 作为语言,然后单击下一步。
    • 选择项目的目标目录并单击“创建”。
  2. 通过拖动添加客户端库GTL.xcodeproj来自Source将上面的客户端库下载文件夹的目录放入 XCode 项目中。
  3. 在 XCode Project Navigator 中,选择您创建的项目以显示项目设置。
  4. Select the Build Phases tab in the project settings and modify the Link Binary with Libraries list to include:
    • libGTLTouchStaticLib.a来自GTL项目。
    • Security.framework and SystemConfiguration.framework.
  5. Select the Build Settings tab in the project settings and modify the following two build settings:
    • Add -ObjC -all_load到链接 > 其他链接器标志设置。编辑这些字段的一个好方法是单击字段名称将其选中,然后单击 Enter 输入设置。
    • 通过使用递归选项将客户端库的源目录添加到搜索路径 > 用户标头搜索路径部分,将客户端库标头添加到应用程序项目。您可以通过将 ** 附加到路径或双击输入的路径并在出现的对话框中选择递归来选择递归选项。 要在基于 Unix 的系统中查找此目录的绝对路径,请导航到终端窗口到您在步骤 2 中下载客户端库的目录,cd 进入 Source 目录,然后键入 pwd 命令。
  6. Drag GTMOAuth2ViewTouch.xib来自客户端库的Source/OAuth2/Touch文件夹到应用程序的Supporting Files folder.
  7. 通过拖动添加Drive API服务GTLDrive.h and GTLDrive_Sources.m来自客户端库的Source/Services/Drive/Generated文件夹直接复制到应用程序项目。

最初感谢Rivero https://stackoverflow.com/users/4151216/rivero为我指明了正确的方向......

谢谢Peter https://stackoverflow.com/users/1176247/peter他的答案这个问题 https://stackoverflow.com/questions/32615688/google-api-error-multiple-methods-named-initwitharray-found.

为 iOS 6、7、8 和 9 构建...

破解了以下内容...


STEP 1

In GTMOAuth2Authentication.h(OAuth 目录)并在GTLService.h(对象目录)

找到这个代码块...

#if (!TARGET_OS_IPHONE && defined(MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_11) \
  || (TARGET_OS_IPHONE && defined(__IPHONE_9_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0)
  #ifndef GTM_USE_SESSION_FETCHER
    #define GTM_USE_SESSION_FETCHER 1
  #endif
#endif

...并改变

#define GTM_USE_SESSION_FETCHER 1

... to

#define GTM_USE_SESSION_FETCHER 0

STEP 2

In GTMGatherInputStream.m(HTTPFetcher目录)

... 改变

return [[[self alloc] initWithArray:dataArray] autorelease];

... to

return [[(GTMGatherInputStream*)[self alloc] initWithArray:dataArray] autorelease];

STEP 3

In GTMHTTPFetcherLogging.m(HTTPFetcher目录)

... 改变

NSString *escapedResponseFile = [responseDataFileName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

... to

NSString *escapedResponseFile = [responseDataFileName stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

STEP 4

In GTL项目设置,Apple LLVM 7.0 警告 - 所有语言下

... 改变

已弃用的函数 = 是

... to

不推荐使用的函数 = 否


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

找不到 GTMSessionFetcher.h 文件将应用程序升级到最新的 google-api-objectivec-client 的相关文章

随机推荐

  • 将 MeiYan 哈希函数移植到 Go

    我想将最先进的哈希函数 MeiYan 从 C 移植到 Go 据我所知 就速度和冲突率而言 这即使不是哈希表的最佳哈希函数 也是最好的哈希函数之一 它至少击败了 MurMur 我是 Go 新手 刚花了一个周末 想出了这个版本 func mei
  • Solidity:ParserError:预期的编译指示、导入指令或合约/接口/库定义

    当我编写简单合约时 我也遇到了最新的 solc 0 5 2 版本 和 0 4 25 的错误 我尝试过以下步骤 已卸载的 Solc npm uninstall solc 安装的目标版本 npm install save 电子邮件受保护 cdn
  • 使用 dapper,为什么在一次使用连接中创建的临时表在第二次使用同一连接时不可用

    我正在尝试使用 C 中的 dapper 执行一系列 SQL Server 步骤 第一步创建一个临时表并填充它 以下步骤从临时表中查询数据 创建 填充似乎运行成功 但临时表中的第一个查询失败 并显示 对象名称 GetPageOfGlobalU
  • 验证隐藏字段

    我正在使用 MVC3 进行不引人注目的验证 我有一个字段 用户需要填写一些数据 然后按 搜索 按钮 如果从未按下搜索或用户在按下搜索后更改了输入字段 则不应提交表单 我添加了一个隐藏字段 设置为true by the click 按钮的事件
  • 在 shell 脚本中获取 2 个数组中的公共值[重复]

    这个问题在这里已经有答案了 我有一个 array1 20 30 40 50 array2 10 20 30 80 100 110 40 我必须从数组 3 中的这两个数组中获取共同值 如下所示 array3 20 30 40 按升序排列 Sh
  • Facebook PHP SDK Graph API 发布到页面无法正常运行

    我正在尝试向我的应用程序添加一项功能 该功能会将状态发布到管理员用户的页面时间线 其详细信息与他们在 Facebook com 上发布的内容相同 我关注的主要功能是链接共享和缩略图 例如当您将链接粘贴到状态中时 它会自动检测缩略图 为您提供
  • HttpServletRequest 和 getHeader():如何正确处理不区分大小写的标头?

    由于我发现根据 RFC HTTP 标头不区分大小写 因此我想知道如何使用 Servlet 以不区分大小写的方式访问 HTTP 标头 有一个 getHeader String 方法来获取标头 但事实证明该方法对标头字段区分大小写 是否有一种
  • 获取UIScrollView的当前位置

    我来自 Android 但在 IOS 上我感到很头疼 我需要制作一个像电影片尾字幕一样的滚动菜单 我使用了下面的代码 rol scroll view contentOffset y timer NSTimer scheduledTimerW
  • 在 Web 浏览器控件中捕获 Javascript 警报

    使用网络浏览器控件浏览站点 有时会出现涉及 javascript 弹出框的错误 当这种情况发生时 我想做一些事情 了解 JavaScript 警报何时弹出 我使用 LostFocus 事件取得了一些成功 但每当它失去焦点时 代码都会运行 这
  • Swift 将多个类分配给 UI 元素

    是否可以将多个自定义类分配给 Swift 中的同一个 UI 元素 我有一个 UITextField 我需要使用 Spring 动画库 对其进行动画处理 并且我还需要在同一个 UITextField 上使用一些其他库来提供一些其他功能 我通常
  • 用于(合法)欺骗 SMS 消息的 SMS 网关

    我正在寻找一个 SMS 网关来通过 HTTP 接口发送短信 但有些短信网关不允许设置发件人ID 允许设置的短信网关要么要求用户证明发件人ID是自己的手机号码 要么手动检查每个发件人ID 以防止出现问题 短信欺骗 http en wikipe
  • 是否可以在Unity的HDRP中创建DepthMask效果?

    我已经为此努力了一段时间 但我不知道是否有可能创建一个深度掩模着色器HDRP 如此处所述 http wiki unity3d com index php DepthMask 对于我的确切用途 我试图在应用了材质的任何形状上创建一个 洞 以显
  • 无法在 Flutter 上找到捆绑的 Java 版本

    I have Android Studio version 3 0 当我使用命令时flutter doctor它向我显示以下内容 无法找到捆绑的 Java 版本 我当前的Java版本是 build 1 8 0 131 b11 在 Windo
  • 设置/更改更改 Android 中的 WebView 用户代理

    我有一个网站 应该只在我的应用程序中使用 WebView 否则我的网站会将用户重定向到可以下载我的应用程序的页面 那么 如何在WebView中更改这个UA呢 另外 由此可能出现哪些问题 您可以使用setUserAgent https dev
  • Makefile 无缘无故删除目标文件

    这是 Makefile 代码 CC gcc CXX g OBJS OMXComponent o Event o hello jpeg o JPEG o OMXCore o Locker o Logger o BIN hello jpeg b
  • HTML Canvas 渐变仅显示一种颜色

    我遇到问题画布渐变它只显示我设置的最后一个颜色gradient addColorStop offset color method 例如 这是我的一段代码 以便更好地理解 let canvas document getElementById
  • RealityKit – 从 Web URL 资源加载 ModelEntity

    我想知道是否有人知道是否可以加载 AR 对象 例如 从 Web url 加载 usdz 并将其放置在 AR 视图中 我尝试过这个 let fileUrl NSURL string https developer apple com augm
  • 为什么 Integer.parseInt("11111111111111111111111111111111",2) 在java中抛出异常? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么 Integer parseInt 11111111111111111111111111111111 2 抛出 java lang
  • 仅当直接执行模块时才运行 ES6 代码[重复]

    这个问题在这里已经有答案了 我一直在使用 ES6 模块 并且我一直在寻找一种方法来包含运行的代码only如果直接执行该文件 而不是由另一个文件导入 在像 Python 这样的早期支持本机模块的语言中 这很简单 只需将代码包装在if name
  • 找不到 GTMSessionFetcher.h 文件将应用程序升级到最新的 google-api-objectivec-client

    我在 iOS 应用程序中实现了对 Google Drive 的访问 自 2014 年中期以来 这一直是应用程序中的一项活跃功能 并且在 iOS 6 7 和 8 下正常运行 我目前正在检查我的项目与 iOS 9 的兼容性 我已经下载了最新的g