發文章先幹一下,媽的蘋果又退我們件,又是該死的iap問題
Audio story is set to consumable.
這什麼鳥理由,怕我們跟apple 線上音樂衝突到嗎,查了一下StackOverFlow也是有一堆人因為這問題被退。
好吧,先不管iap的事情,這次還有一個退件原因是因為我把暫存圖存到了Document資料夾下
因為在iOS SandBox下 只有tmp和library/cache下不會被iTunes和iCloud備份。
你硬要存到Document的話,要寫一段Code去特別聲明這個資料夾是不備份的。
但你要存一些東西又要暫存資料呢,只好另尋方法。
網路最常用的就是存到library/cache中,這樣你存得資料就不會被備份到。
你要查看你存的東西會不會被備份可以用此方法
- Install and launch your app
- Go to Settings > iCloud > Storage & Backup > Manage Storage
- If necessary, tap “Show all apps”
- Check your app’s storage
因為我用的圖片暫存是我自己寫的,不是用網路上找的,例如SDWebImage這個有名的第三方Library。
所以著手來改一下自己的程式碼吧。
原本找到Document資料夾下的語法應該是這樣
Document directory1 2 3 4
| NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:你的String];
|
現在要改成如下
找到cache Dir 創建自定目錄1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cacheDirectory = [paths[0] stringByAppendingPathComponent:@"ImageCache"]; BOOL isDir = NO; NSError *error; if (! [[NSFileManager defaultManager] fileExistsAtPath:cacheDirectory isDirectory:&isDir] && isDir == NO) { [[NSFileManager defaultManager] createDirectoryAtPath:cacheDirectory withIntermediateDirectories:NO attributes:nil error:&error]; } NSString *storePath = [cacheDirectory stringByAppendingPathComponent:你的String];
|
上面你的String中,你可先做UTF8編碼或是base64做處理,隨自己高興
這樣就完成了把照片存到/library/cache中的ImageCache中
有些友善的APP還會提供刪除暫存的工作,可以用如下Method
刪除自定cache中資料夾檔案1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| +(void)RemoveCacheFiles { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cacheDirectory = [paths[0] stringByAppendingPathComponent:@"ImageCache"]; NSFileManager *fileMgr = [[[NSFileManager alloc] init] autorelease]; NSError *error = nil; NSArray *directoryContents = [fileMgr contentsOfDirectoryAtPath:cacheDirectory error:&error]; if (error == nil) { for (NSString *path in directoryContents) { NSString *fullPath = [cacheDirectory stringByAppendingPathComponent:path]; BOOL removeSuccess = [fileMgr removeItemAtPath:fullPath error:&error]; if (!removeSuccess) { } } } else { } }
|
這樣就完成了改寫自己程式碼的東西了,暫存的資料既不會被iTunes備份也不會上傳到iCloud更不會因為這原因被APPLE退件了。