跳转至

核心参数生成说明

以下MD5默认为HEX小写

AppList

User.app_list字段

Android 请直接传输PackageName, 英文逗号分隔

iOS请基于Queried URL Schemes使用UIKit.UIApplication.canOpenURL进行探查后,映射为BundleId,英文逗号分隔后传输

请注意,iOS15后仅允许最多50个item设置在Info.plist中

https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl/

iOS: PAID_1_3

PAID = MD5(启动时间 + ":" + 更新时间)

eg: 启动时间 1608950797 更新时间 1600326333.862857 PAID_1_3 b0dd8df5ee995862e42f4a922c7de25a

iOS: PAID_1_4

PAID_1_4 = MD5(设备初始化时间) + "-" + MD5(系统更新时间) + "-" + MD5(系统启动时间)

Objective-C
//设备初始化时间
static NSString *getFileTime() {
    struct stat info;
    int result = stat("/var/mobile", &info);
    if (result != 0) {
        return @""; 
    }
    struct timespec time = info.st_birthtimespec;
    return [NSString stringWithFormat:@"%ld.%09ld", time.tv_sec, time.tv_nsec];
}

//系统更新时间
+(NSString *)getSysU {
    NSString *result = nil;
    NSString *information = @"L3Zhci9tb2JpbGUvTGlicmFyeS9Vc2VyQ29uZmlndXJhdGlvblByb2ZpbGVzL1B1YmxpY0luZm8vTUNNZXRhLnBsaXN0";
    NSData *data=[[NSData alloc]initWithBase64EncodedString:information options:0];
    NSString *dataString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    NSError *error = nil;
    NSDictionary *fileAttributes = [[NSFileManager defaultManager]
    attributesOfItemAtPath:dataString error:&error];
    if (fileAttributes) {
        id singleAttibute = [fileAttributes objectForKey:NSFileCreationDate];
        if ([singleAttibute isKindOfClass:[NSDate class]]) {
            NSDate *dataDate = singleAttibute;
            result = [NSString stringWithFormat:@"%.6f",[dataDate timeIntervalSince1970]];
        }
    }
    return result;
}

//系统启动时间
static time_t bootSecTime() {
    struct timeval boottime;
    size_t len = sizeof(boottime);
    int mib[2] = { CTL_KERN, KERN_BOOTTIME };
    if( sysctl(mib, 2, &boottime, &len, NULL, 0) < 0 ) {
        return 0; 
    }
    return boottime.tv_sec;
}
+(NSString *)bootTimeInSec {
    return [NSString stringWithFormat:@"%ld",bootSecTime()];
}