HomeKit 二維碼生成規(guī)則



- (NSString *)reverseString:(NSString *)text {
    NSInteger length = text.length;
    NSMutableString *rev = [NSMutableString string];
    for (int i = 0; i < length; i++) {
        unichar str = [text characterAtIndex:length-i-1];
        [rev appendFormat:@"%c",str];
    }
    return rev;
}

- (NSString *)gen_homekit_setup_uri_withCategory:(int)category
                                 withPsw:(NSString *)psw
                             withSetupId:(NSString *)setupId {
    int version = 0;
    int reserved = 0;
    int flags = 2;
    
    long payload = 0;
    payload |= (version & 0x7);
    
    payload <<= 4;
    payload |=(reserved & 0xf);  // reserved bits
    
    payload <<= 8;
    payload |= (category & 0xff);
    
    payload <<= 4;
    payload |= (flags & 0xf);
    
    payload <<= 27;
    payload |= ([psw stringByReplacingOccurrencesOfString:@"-" withString:@""].intValue) & 0x7fffffff;
    
    NSString *BASE36 = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    NSString *encodedPayload = @"";
    for (int i = 0; i < 9; i++) {
        int index = payload % 36;
        unichar temp_code = [BASE36 characterAtIndex:index];
        encodedPayload = [encodedPayload stringByAppendingFormat:@"%c", temp_code];
        payload /= 36;
    }
    return [NSString stringWithFormat:@"X-HM://%@%@",
            [self reverseString:encodedPayload],
            setupId];
}

-(void)test() {
     // X-HM://00527Y91Q1QJ8
     int accsory_cateory = 5;
     NSString *psw = @"123-45-678";
     NSString *setupId = @"1QJ8";
     NSLog(@"%@",[self gen_homekit_setup_uri_withCategory:5 withPsw: psw withSetupId: setupId]);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容