and*_*der 4 xcode objective-c ios google-drive-api ios9
我在iOS应用中实现了对Google云端硬盘的访问权限.这是自2014年中期以来应用程序中的一个活跃功能,并且在iOS 6,7和8下正常运行.我目前正在检查我的项目是否与iOS 9兼容.
我已下载最新版本google-api-objectivec-client以确保我的项目保持最新状态.
我重新编写了标准的Google实施工具......详见本页详细信息,并在本文末尾包含完整性.
问题:当我尝试构建我的任何版本时,我收到错误" 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
Run Code Online (Sandbox Code Playgroud)
我不明白如何GTM_USE_SESSION_FETCHER设置以及在这种情况下为什么会这样.
任何建议都非常感谢.
适用于iOS的Google Drive API实施
注意:步骤1和2完成没有问题.
第3步:准备项目
GTL.xcodeproj从Source上面的客户端库下载文件夹的目录拖动到XCode项目来添加客户端库.Link Binary with Libraries列表以包括:
libGTLTouchStaticLib.a 来自GTL项目.Security.framework和SystemConfiguration.framework.-ObjC -all_load到链接>其他链接器标志设置.编辑这些字段的一种好方法是在字段名称上单击一次以选择它,然后单击Enter以输入设置.GTMOAuth2ViewTouch.xib从客户端库的Source/OAuth2/Touch文件夹到应用程序的Supporting Files文件夹.GTLDrive.h,并GTLDrive_Sources.m从客户端库的Source/Services/Drive/Generated文件夹直接到应用程序项目.最初感谢Rivero指出我正确的方向......
为iOS 6,7,8和9构建...
黑客攻击以下......
步骤1
在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
Run Code Online (Sandbox Code Playgroud)
......并且改变
#define GTM_USE_SESSION_FETCHER 1
Run Code Online (Sandbox Code Playgroud)
... 至
#define GTM_USE_SESSION_FETCHER 0
Run Code Online (Sandbox Code Playgroud)
第2步
在GTMGatherInputStream.m(HTTPFetcher目录)中
......改变
return [[[self alloc] initWithArray:dataArray] autorelease];
Run Code Online (Sandbox Code Playgroud)
... 至
return [[(GTMGatherInputStream*)[self alloc] initWithArray:dataArray] autorelease];
Run Code Online (Sandbox Code Playgroud)
第3步
在GTMHTTPFetcherLogging.m(HTTPFetcher目录)中
......改变
NSString *escapedResponseFile = [responseDataFileName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
... 至
NSString *escapedResponseFile = [responseDataFileName stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
Run Code Online (Sandbox Code Playgroud)
第4步
在GTL项目设置中,在Apple LLVM 7.0警告 - 所有语言下
......改变
不推荐使用的功能=是
... 至
不推荐使用的功能=否
@ andrewbuilder的解决方案有效.
如果你的目标是IOS 8,那就改变吧
#define GTM_USE_SESSION_FETCHER 1
Run Code Online (Sandbox Code Playgroud)
至
#define GTM_USE_SESSION_FETCHER 0
Run Code Online (Sandbox Code Playgroud)
在GTMOAuth2Authentication.h和GTLService.h文件中.
如果您的目标是IOS 9,则需要使用GTMSessionFetcher文件(https://code.google.com/p/gtm-session-fetcher/)替换GTMHTTPFetcher文件.
参考:https://github.com/google/google-api-objectivec-client/issues/88
| 归档时间: |
|
| 查看次数: |
4378 次 |
| 最近记录: |