開發(fā)中常用方法

  1. 獲取設(shè)備的UUID
+ (NSString*)getDeviceUUID{
    int                 mgmtInfoBase[6];
    char                *msgBuffer = NULL;
    size_t              length;
    unsigned char       macAddress[6];
    struct if_msghdr    *interfaceMsgStruct;
    struct sockaddr_dl  *socketStruct;
    NSString * errorFlag = NULL;
    
    // Setup the management Information Base (mib)
    mgmtInfoBase[0] = CTL_NET;        // Request network subsystem
    mgmtInfoBase[1] = AF_ROUTE;       // Routing table info
    mgmtInfoBase[2] = 0;
    mgmtInfoBase[3] = AF_LINK;        // Request link layer information
    mgmtInfoBase[4] = NET_RT_IFLIST;  // Request all configured interfaces
    
    // With all configured interfaces requested, get handle index
    if ((mgmtInfoBase[5] = if_nametoindex("en0")) == 0)
        errorFlag = @"if_nametoindex failure";
    else
    {
        // Get the size of the data available (store in len)
        if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0)
            errorFlag = @"sysctl mgmtInfoBase failure";
        else
        {
            // Alloc memory based on above call
            if ((msgBuffer = malloc(length)) == NULL)
                errorFlag = @"buffer allocation failure";
            else
            {
                // Get system information, store in buffer
                if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0)
                    errorFlag = @"sysctl msgBuffer failure";
            }
        }
    }
    
    // Befor going any further...
    if (errorFlag != NULL)
    {
        //DebugLog(@"Error: %@", errorFlag);
        return errorFlag;
    }
    
    // Map msgbuffer to interface message structure
    interfaceMsgStruct = (struct if_msghdr *) msgBuffer;
    
    // Map to link-level socket structure
    socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1);
    
    // Copy link layer address data in socket structure to an array
    memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6);
    
    // Read from char array into a string object, into traditional Mac address format
    NSString *macAddressString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X",
                                  macAddress[0], macAddress[1], macAddress[2],
                                  macAddress[3], macAddress[4], macAddress[5]];
    //    DebugLog(@"Mac Address: %@", macAddressString);
    
    // Release the buffer memory
    free(msgBuffer);
    
    //適配iOS7設(shè)備綁定功能
    if ([[[UIDevice currentDevice] systemVersion]intValue]<6) {
        return macAddressString;
    }
    else{
        //        return [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
        NSString *adUUIDString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
        //NSLog(@"adUUIDString: %@",adUUIDString);
        
        return [adUUIDString stringByReplacingOccurrencesOfString:@"-" withString:@""];
        
    }
}

說明: 需要導(dǎo)入下面的頭文件

#include <sys/sysctl.h>
#include <net/if.h>
#include <net/if_dl.h>

當(dāng)程序卸載重新安裝之后獲取到的UUID會發(fā)生變化,可是在開發(fā)中我們需要的是不能變化的山孔,那該怎么辦呢赞枕??郎仆?
別急,已經(jīng)為你準(zhǔn)備好了兜蠕,請看下面的鏈接.

鏈接: http://pan.baidu.com/s/1miwBGUG 密碼: nbys

  1. 過濾emoji字符
/**
 *  過濾emoji字符
 *
 *  @param string 需要過濾的字符串
 *
 *  @return 過濾emoji后的字符串
 */
+ (NSString *)filterEmoji:(NSString *)string {
    NSUInteger len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
    const char *utf8 = [string UTF8String];
    char *newUTF8 = malloc( sizeof(char) * len );
    int j = 0;
    
    //0xF0(4) 0xE2(3) 0xE3(3) 0xC2(2) 0x30---0x39(4)
    for ( int i = 0; i < len; i++ ) {
        unsigned int c = utf8[i];
        BOOL isControlChar = NO;
        if ( c == 4294967280 ||
            c == 4294967089 ||
            c == 4294967090 ||
            c == 4294967091 ||
            c == 4294967092 ||
            c == 4294967093 ||
            c == 4294967094 ||
            c == 4294967095 ||
            c == 4294967096 ||
            c == 4294967097 ||
            c == 4294967088 ) {
            i = i + 3;
            isControlChar = YES;
        }
        if ( c == 4294967266 || c == 4294967267 ) {
            i = i + 2;
            isControlChar = YES;
        }
        if ( c == 4294967234 ) {
            i = i + 1;
            isControlChar = YES;
        }
        if ( !isControlChar ) {
            newUTF8[j] = utf8[i];
            j++;
        }
    }
    newUTF8[j] = '\0';
    NSString *encrypted = [NSString stringWithCString:(const char*)newUTF8 encoding:NSUTF8StringEncoding];
    free( newUTF8 );
    return encrypted;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扰肌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子熊杨,更是在濱河造成了極大的恐慌曙旭,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晶府,死亡現(xiàn)場離奇詭異夷狰,居然都是意外死亡,警方通過查閱死者的電腦和手機郊霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爷绘,“玉大人书劝,你說我怎么就攤上這事进倍。” “怎么了购对?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵猾昆,是天一觀的道長。 經(jīng)常有香客問我骡苞,道長垂蜗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任解幽,我火速辦了婚禮贴见,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躲株。我一直安慰自己片部,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布霜定。 她就那樣靜靜地躺著档悠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪望浩。 梳的紋絲不亂的頭發(fā)上辖所,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音磨德,去河邊找鬼缘回。 笑死,一個胖子當(dāng)著我的面吹牛剖张,可吹牛的內(nèi)容都是我干的切诀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼搔弄,長吁一口氣:“原來是場噩夢啊……” “哼幅虑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起顾犹,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤倒庵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炫刷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擎宝,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年浑玛,在試婚紗的時候發(fā)現(xiàn)自己被綠了绍申。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖极阅,靈堂內(nèi)的尸體忽然破棺而出胃碾,到底是詐尸還是另有隱情,我是刑警寧澤筋搏,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布仆百,位于F島的核電站,受9級特大地震影響奔脐,放射性物質(zhì)發(fā)生泄漏俄周。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一髓迎、第九天 我趴在偏房一處隱蔽的房頂上張望峦朗。 院中可真熱鬧,春花似錦竖般、人聲如沸甚垦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艰亮。三九已至,卻和暖如春挣郭,著一層夾襖步出監(jiān)牢的瞬間迄埃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工兑障, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留侄非,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓流译,卻偏偏與公主長得像逞怨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子福澡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一些工作中用到的方法叠赦,會持續(xù)更新使用方法:對照目錄按標(biāo)題進(jìn)行搜索(Command+f) 目錄 文本框輸入時使當(dāng)前T...
    肥貓記閱讀 319評論 1 1
  • 作為程序員,我想每個人在開發(fā)之前都喜歡封裝一些簡單的方法革砸,加快自己開發(fā)的速度除秀,我分享一些的?用到過得,不是什么高深...
    前端杜若閱讀 484評論 0 8
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,117評論 25 707
  • dgate是一款基于Vert.x的API Gateway算利,它不同于大多數(shù)其他API Gateway册踩,主要表現(xiàn)在兩個...
    胡鍵閱讀 4,101評論 0 5
  • 數(shù)量與質(zhì)量 經(jīng)典的作品確實是需要耗費大量時間。所以在投放前我們一定要對自己的作品負(fù)責(zé)效拭,確認(rèn)完成的是一個完整的/友好...
    風(fēng)口浪尖的蒽閱讀 250評論 0 3