我正在尝试实现Apple发布的新VerificationController.m类来修复应用内购买欺诈问题.
正如Apple发布的所有内容一样,这是一个更加模糊,不完整和糟糕的解释文档,其中包含大量空洞和未知数,无法被每个人所规避/理解.
我试图实现它,但在代码的最后我们看到这四种方法:
- (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length
{
#warning Replace this method.
return nil;
}
- (NSString *)decodeBase64:(NSString *)input length:(NSInteger *)length
{
#warning Replace this method.
return nil;
}
#warning Implement this function.
char* base64_encode(const void* buf, size_t size)
{ return NULL; }
#warning Implement this function.
void * base64_decode(const char* s, size_t * data_len)
{ return NULL; }
Run Code Online (Sandbox Code Playgroud)
你可以看到Apple懒得在代码末尾实现C函数.由于我的C/C++能力很糟糕,我发现我需要在C/C++中实现这两个函数,并且它们必须返回char和void(???).其他人已经发布了在SO上执行此操作的例程,但是他们要么在Objective-C中,要么不返回chars和void(??).
注意:这是我遇到的另一个问题:如果Apple以这种形式使用该方法,该方法如何返回void?
uint8_t *purchase_info_bytes = base64_decode([purchase_info_string cStringUsingEncoding:NSASCIIStringEncoding], &purchase_info_length);
Run Code Online (Sandbox Code Playgroud)
不应该返回uint8_t吗?
注意2:我遇到的另一个问题是apple表示base64_encode是必需的,但它没有在它们提供的代码上使用.我认为他们吸烟不好或我的C/C++知识真的很臭.
所以,回到我的第一个问题.有人可以发布/指出一个方法,可以完成遵循声明的方法base64_encode和base64_decode的要求的工作吗?请不要发布与Apple强加的这些要求不兼容的objective-c方法.
谢谢.