gpt4 book ai didi

ios - 谷歌分析 SDK iOS10

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:12:15 29 4
gpt4 key购买 nike

我已经从 cocoa pod 版本 3.14 安装了 Google Analytics

id<GAITracker> tracker =  [[GAI sharedInstance] trackerWithTrackingId:oneTrackId];

代码行在 iOS 10 上崩溃

NSString *user_id = [tracker get:kGAIUserId];

Error * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[GAITrackerModel valueForKey:]: attempt to retrieve a value for a nil key'

最佳答案

Apple 更改了 iOS 10 中的 valueForKey: 方法行为。以前使用参数 nil 调用 valueForKey: 会导致使用 nil 调用 valueForUndefinedKey:,如果此方法未被覆盖, 它失败。但是现在没有这个调用它会立即失败。

GAITrackerModel 已覆盖 valueForUndefinedKey:,无论输入参数如何,它都返回 nil。

我可以提供方法 swizzling 以恢复以前的行为作为临时解决方案(谷歌应该修复这个问题并且这段代码不是生产就绪的,但在那之前):

#import <objc/runtime.h>

void SwizzleInstanceMethod(Class classToSwizzle, SEL origSEL, Class myClass, SEL newSEL) {
Method methodToSwizzle = class_getInstanceMethod(classToSwizzle, origSEL);
Method myMethod = class_getInstanceMethod(myClass, newSEL);
class_replaceMethod(classToSwizzle, newSEL, method_getImplementation(methodToSwizzle), method_getTypeEncoding(methodToSwizzle));
class_replaceMethod(classToSwizzle, origSEL, method_getImplementation(myMethod), method_getTypeEncoding(myMethod));
}

@interface FixGoogleSDKiOS10 : NSObject

@end

@implementation FixGoogleSDKiOS10

+ (void)load {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
SwizzleInstanceMethod([NSObject class], @selector(valueForKey:), [self class], @selector(yb_valueForKey:));
});
}

- (nullable id)yb_valueForKey:(NSString *)key {
if (!key) {
return [self valueForUndefinedKey:key];
}
return [self yb_valueForKey:key];
}

@end

关于ios - 谷歌分析 SDK iOS10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38850192/

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