gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:03:09 24 4
gpt4 key购买 nike

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

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

我重做了标准的 Google 实现...详见 this page并包含在本文末尾以确保完整性。

问题:当我尝试构建我的任何版本时,我收到错误“GTMSessionFetcher.h file not found”。

我确定我已按照以下步骤/在 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 已顺利完成。

第 3 步:准备项目

  1. 在 Xcode 中,创建一个新项目以包含示例应用程序:
    • 点击"file">“新建”>“项目”,选择“单一 View 应用程序”模板,然后点击“下一步”。
    • 填写产品名称、组织名称和公司标识符。确保选择 Objective-C 作为语言,然后单击下一步。
    • 为项目选择一个目标目录,然后单击“创建”。
  2. 通过将 GTL.xcodeproj 从上面客户端库下载文件夹的 Source 目录拖到 XCode 项目中来添加客户端库。
  3. 在 XCode Project Navigator 中,选择您创建的项目以显示项目设置。
  4. 在项目设置中选择 Build Phases 选项卡并修改 Link Binary with Libraries 列表以包括:
    • libGTLTouchStaticLib.a 来自 GTL 项目。
    • Security.frameworkSystemConfiguration.framework
  5. 在项目设置中选择build设置选项卡并修改以下两个build设置:
    • -ObjC -all_load 添加到 Linking > Other Linker Flags 设置。编辑这些字段的一个好方法是单击一次字段名称将其选中,然后单击 Enter 输入设置。
    • 通过使用递归选项将客户端库的源目录添加到搜索路径 > 用户 header 搜索路径部分,将客户端库 header 添加到应用程序项目。您可以通过将 ** 附加到路径或双击输入的路径并在出现的对话框中选择递归来选择递归选项。要在基于 Unix 的系统中找到此目录的绝对路径,请将终端窗口导航到您在第 2 步中下载客户端库的目录,cd 进入源目录,然后键入 pwd 命令。
  6. GTMOAuth2ViewTouch.xib 从客户端库的 Source/OAuth2/Touch 文件夹拖到应用程序的 Supporting Files 文件夹中。
  7. 通过从客户端库的 Source/Services/Drive/Generated 文件夹中拖动 GTLDrive.hGTLDrive_Sources.m 添加 Drive API 服务直接到应用程序项目。

最佳答案

最初感谢Rivero为我指明了正确的方向......

感谢Peter他对 this question 的回答.

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

入侵了以下...


第一步

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

...到

#define GTM_USE_SESSION_FETCHER 0

第 2 步

GTMGatherInputStream.m(HTTPFetcher 目录)

...改变

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

...到

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

第 3 步

GTMHTTPFetcherLogging.m(HTTPFetcher 目录)

...改变

NSString *escapedResponseFile = [responseDataFileName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

...到

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

第 4 步

GTL 项目设置中,在 Apple LLVM 7.0 Warnings - All Languages 下

...改变

已弃用的函数 = 是

...到

已弃用的函数 = 否


关于ios - 找不到 GTMSessionFetcher.h 文件将应用程序升级到最新的 google-api-objectivec-client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com