首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未找到将应用程序升级到最新的google objectivec-client的file Fetcher.h文件

未找到将应用程序升级到最新的google objectivec-client的file Fetcher.h文件
EN

Stack Overflow用户
提问于 2015-09-28 12:09:10
回答 7查看 5.7K关注 0票数 4

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

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

我重新做了谷歌的标准实现..。如此页中所详细介绍的,并包括在本文结尾部分的完整性。

问题:当我试图在任何版本中构建时,都会收到错误"**GTMSessionFetcher.h** 文件未找到“.

我确信我已经按照下面/在Google网页上的步骤正确地实现了API。

我已经查看了我的代码的旧版本,但不幸的是,我没有备份Google,所以很难判断什么已经改变了。

它似乎源于这个..。在GTMOAuth2Authentication.h..。

代码语言:javascript
运行
复制
#if GTM_USE_SESSION_FETCHER
  #import "GTMSessionFetcher.h"
#else
  #import "GTMHTTPFetcher.h"
#endif  // GTM_USE_SESSION_FETCHER

我不明白GTM_USE_SESSION_FETCHER是如何设置的,为什么在这种情况下是正确的。

任何建议都非常感谢。

iOS的Google实现

注意:步骤1和步骤2完成,没有问题。

第三步:准备项目

  1. 在Xcode中,创建一个包含示例应用程序的新项目:
    • 单击File > New > Project,选择单一视图应用程序模板,然后单击Next。
    • 填写产品名称、组织名称和公司标识符。确保选择Objective作为语言,然后单击Next。
    • 选择项目的目标目录,然后单击Create。

  1. 通过将GTL.xcodeproj从客户端库下载文件夹的Source目录拖动到XCode项目中,添加客户端库。
  2. 在“XCode项目导航器”中,选择您创建的项目以显示项目设置。
  3. 在项目设置中选择“构建阶段”选项卡,并修改Link Binary with Libraries列表以包括:
    • 来自GTL项目的libGTLTouchStaticLib.a
    • Security.frameworkSystemConfiguration.framework.

  1. 在项目设置中选择Build选项卡,并修改以下两个生成设置:
    • -ObjC -all_load添加到链接>其他链接标记设置中。编辑这些字段的一个好方法是单击字段名一次来选择它,然后单击Enter输入设置。
    • 通过将客户端库的源目录添加到搜索路径>带有递归选项的用户标题搜索路径部分,向应用程序项目添加客户端库标头。您可以通过将**附加到路径或双击输入的路径并在出现的对话框中选择递归选项来选择递归选项。若要在基于Unix的系统中找到此目录的绝对路径,请将终端窗口导航到步骤2中下载客户端库的目录,cd进入源目录,然后键入pwd命令。

  1. GTMOAuth2ViewTouch.xib从客户端库的Source/OAuth2/Touch文件夹拖到应用程序的Supporting Files文件夹中。
  2. 通过将GTLDrive.hGTLDrive_Sources.m从客户端库的Source/Services/Drive/Generated文件夹直接拖动到应用程序项目中,添加Drive服务。
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-10-02 12:25:24

首先感谢里韦罗为我指明了正确的方向.

感谢彼得这个问题的回答。

建筑为iOS 6,7,8和9.

黑了下面的..。

步骤1

GTMOAuth2Authentication.h (OAuth目录)和GTLService.h (对象目录)中

找到这个代码块..。

代码语言:javascript
运行
复制
#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

..。和改变

代码语言:javascript
运行
复制
#define GTM_USE_SESSION_FETCHER 1

..。至

代码语言:javascript
运行
复制
#define GTM_USE_SESSION_FETCHER 0

步骤2

GTMGatherInputStream.m (HTTPFetcher目录)中

..。变化

代码语言:javascript
运行
复制
return [[[self alloc] initWithArray:dataArray] autorelease];

..。至

代码语言:javascript
运行
复制
return [[(GTMGatherInputStream*)[self alloc] initWithArray:dataArray] autorelease];

步骤3

GTMHTTPFetcherLogging.m (HTTPFetcher目录)中

..。变化

代码语言:javascript
运行
复制
NSString *escapedResponseFile = [responseDataFileName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

..。至

代码语言:javascript
运行
复制
NSString *escapedResponseFile = [responseDataFileName stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

步骤4

GTL项目设置中,在AppleLVM7.0警告下-所有语言

..。变化

弃用函数=是

..。至

弃用函数= NO

票数 8
EN

Stack Overflow用户

发布于 2015-10-08 19:30:29

@andrewbuilder的解决方案有效。

如果您的目标是IOS 8,只需更改

代码语言:javascript
运行
复制
#define GTM_USE_SESSION_FETCHER 1

代码语言:javascript
运行
复制
#define GTM_USE_SESSION_FETCHER 0

在GTMOAuth2Authentication.h和GTLService.h文件中。

如果您的目标是IOS 9,则需要将GTMHTTPFetcher文件替换为GTMSessionFetcher文件(https://code.google.com/p/gtm-session-fetcher/)。

参考资料:https://github.com/google/google-api-objectivec-client/issues/88

票数 5
EN

Stack Overflow用户

发布于 2016-12-26 16:08:26

使用JSON的Google客户端库已被REST取代(尚未发布结束日期)。

用所有的依赖项来提取新的库对我来说都是有效的,而且从来没有黑客攻击过我。

https://github.com/google/google-api-objectivec-client

代码语言:javascript
运行
复制
git clone --recursive https://github.com/google/google-api-objectivec-client-for-rest.git
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32822629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档