ios指定目錄不進行icloud檢測

來源:互聯網
上載者:User

標籤:ios開發   icloud檢測   

時間真的是過得飛快,一周過去,現在來總結想想,好像都沒有什麼收穫。這是一件讓人非常惱怒的事情,明明每天都加班,明明連周六都在上班,錢沒多拿,經驗和知識卻沒有增加。上一周主要是在同事做過的模組裡添加新功能,由於同事去做新的遊戲,原先的應用完全由我來維護。同事的代碼不錯,採用MVC結構,結構剝離的相當明確,C層採用一個驅動,驅動裡面嵌套了一個狀態機器。M資料採用裝飾者模式嵌入C 層,利用事件響應機制來實現C層與V層的通訊。比較有價值的應該是他實現狀態機器的過程,可惜我要趕項目,而且當時編譯原理也沒學透徹,所以有點囫圇吞棗了。再者就是看同事定義的與背景協議了,我們現在的做的是德州撲克的回放,狀態比較多。著實是花了一些時間去看,代碼是如何讀取資料的。

當然這不是一篇抱怨的文章,雖然我老是抱怨這抱怨那的,其實我也挺討厭那樣的自己,只是控制不住罷了。比較有意義的一點可能是如何繞過ios的icloud審核。我們的應用是一個弱連網的,為了節省使用者流量因此在app裡面預存了一些資料。在程式第一次運行時,將資料從程式包拷貝到document目錄。由於這個原因,app被app store拒絕過一次,提示程式未做任何操作,但是icloud多了一些資料。

繞過的方法如下:

- (BOOL)addSkipBackupAttributeToItemAtURLHigh:(NSURL *)URL{//    5.1 +    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);        NSError *error = nil;    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]                                  forKey: NSURLIsExcludedFromBackupKey error: &error];    if(!success){        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);    }    return success;}- (BOOL)addSkipBackupAttributeToItemAtURLLow:(NSURL *)URL{//    5.0.1:    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);                const char* filePath = [[URL path] fileSystemRepresentation];                const char* attrName = "com.apple.MobileBackup";        u_int8_t attrValue = 1;                int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);        return result == 0;    }


沒有找到好的檢測版本的方法,就用了最土的一種:

  <p class="p1"><span class="s1">    </span><span class="s2">NSURL</span><span class="s1"> *tempURL = [</span><span class="s2">NSURL</span><span class="s1"> </span>fileURLWithPath<span class="s1">:[</span><span class="s2">NSString</span><span class="s1"> </span>stringWithUTF8String<span class="s1">:(</span><span class="s3">CCFileUtils</span><span class="s1">::</span><span class="s4">sharedFileUtils</span><span class="s1">()-></span><span class="s4">getWritablePath</span><span class="s1">()+</span><span class="s5">"temp/"</span><span class="s1">).</span>c_str<span class="s1">()]];</span></p><p class="p2">   </p><p class="p3">    <span class="s2">NSString</span> *stringVersion =[[<span class="s2">UIDevice</span> <span class="s6">currentDevice</span>] <span class="s6">systemVersion</span>];</p><p class="p3">    <span class="s2">NSArray</span> * array = [stringVersion <span class="s6">componentsSeparatedByString</span>:<span class="s5">@"."</span>];</p><p class="p3">    <span class="s7">int</span> symbol = <span class="s8">0</span>;</p><p class="p3">    <span class="s7">for</span> (<span class="s2">NSInteger</span> i = <span class="s8">0</span>; i < array.<span class="s6">count</span>; ++ i) {</p><p class="p3">        <span class="s7">if</span> (i == <span class="s8">0</span>) {</p><p class="p3">            <span class="s7">if</span> ([[array <span class="s6">objectAtIndex</span>:i] <span class="s6">integerValue</span>] > <span class="s8">5</span>) {</p><p class="p3">                symbol = <span class="s8">3</span>;</p><p class="p3">                <span class="s7">break</span>;</p><p class="p3">            }<span class="s7">else</span> <span class="s7">if</span>([[array <span class="s6">objectAtIndex</span>:i] <span class="s6">integerValue</span>] < <span class="s8">5</span>){</p><p class="p3">                symbol = <span class="s8">0</span>;</p><p class="p3">                <span class="s7">break</span>;</p><p class="p3">            }</p><p class="p3">        }<span class="s7">else</span> <span class="s7">if</span>(i == <span class="s8">1</span>){</p><p class="p3">            <span class="s7">if</span> ([[array <span class="s6">objectAtIndex</span>:i] <span class="s6">integerValue</span>] >= <span class="s8">1</span>) {</p><p class="p3">                symbol = <span class="s8">3</span>;</p><p class="p3">                <span class="s7">break</span>;</p><p class="p3">            }</p><p class="p3">        }<span class="s7">else</span> <span class="s7">if</span>(i == <span class="s8">2</span>){</p><p class="p3">            <span class="s7">if</span> ([[array <span class="s6">objectAtIndex</span>:i] <span class="s6">integerValue</span>] > <span class="s8">0</span>) {</p><p class="p3">                symbol = <span class="s8">2</span>;</p><p class="p3">                <span class="s7">break</span>;</p><p class="p3">            }</p><p class="p3">        }</p><p class="p3">    }</p><p class="p3">    <span class="s7">if</span> (symbol == <span class="s8">2</span>) {</p><p class="p4"><span class="s1">        [</span><span class="s7">self</span><span class="s1"> </span>addSkipBackupAttributeToItemAtURLLow<span class="s1">:tempURL];</span></p><p class="p3">    }<span class="s7">else</span> <span class="s7">if</span>(symbol == <span class="s8">3</span>){</p><p class="p4"><span class="s1">        [</span><span class="s7">self</span><span class="s1"> </span>addSkipBackupAttributeToItemAtURLHigh<span class="s1">:tempURL];</span></p><p class="p3">    }</p>
值得注意的是:5.0一下的不存在icloud檢測;不允許將document整個目錄作為icloud忽略目錄;檢測V5.0.1時需要匯入sys/xattr.h


ios指定目錄不進行icloud檢測

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.