프로젝트 구성시 iCloud에 관한 설정을 신경쓰고 하지 않다보면 Appstore에 등록하는 

과정에서 iCloud 관련(QA1719) 문제로 Reject가 당하는 경우가 발생한다.


아래 email은 data storage guidelines 를 따라지 않았다는 사유이고, 내용을 자세히 보면

documents폴더에 데이터를 넣는 과정에서 iCloud와 문제가 생길 수 있다는 내용이다.


We found that your app does not follow the iOS Data Storage Guidelines, which is required per theApp Store Review Guidelines.

In particular, we found that on launch and/or content download, your app stores 4.13MB. To check how much data your app is storing:

- Install and launch your app
- Go to Settings > iCloud > Storage & Backup > Manage Storage 
- If necessary, tap "Show all apps" 
- Check your app's storage

The iOS Data Storage Guidelines indicate that only content that the user creates using your app, e.g., documents, new files, edits, etc., should be backed up by iCloud. 

Temporary files used by your app should only be stored in the /tmp directory; please remember to delete the files stored in this location when the user exits the app.

Data that can be recreated but must persist for proper functioning of your app - or because customers expect it to be available for offline use - should be marked with the "do not back up" attribute. For NSURL objects, add the NSURLIsExcludedFromBackupKey attribute to prevent the corresponding file from being backed up. For CFURLRef objects, use the corresponding kCFURLIsExcludedFromBackupKey attribute. 

For more information, please see Technical Q&A 1719: How do I prevent files from being backed up to iCloud and iTunes?. 



 
#include <sys/xattr.h>
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1
        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;
    } else { // iOS >= 5.1
        NSError *error = nil;
        [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
        return error == nil;
    }
} 


iOS 5.0 이전 버전까지는 iCloud에 관한 설정을 신경쓰지 않아도 되기 때문에 상관없지만, 이후의 버
전에서는 apple의 정책에 맞게 데이터 관리를 해 주어야 한다.

혹시 iCloud를 사용한다면 다른 포스팅을 찾아보기를 바란다.

만약, iCloud를 사용하지 않는다면 아래와 같은 메서드를 추가해 줌으로써 해결이 가능하다.


위 코드의 사용방법은 자신이 코드상에서 documents 폴더에 접근하여 작업하는 부분에서 path를 설

정할 때, 그 path를 NSURL형태로 바꾸어 addSkipBackupAttributeToItemAtURL 메서드에

넣어주면 해당 경로는 iCloud 백업을 사용하지 않게된다.


코드에서 보면 iOS5.0.1과 iOS5.1 두가지로 나위어져 있다.

2012년 4월 이전까지는 5.0.1에 관련된 사항만 넣어주면 해결이 되었지만, iOS5.1버전이 나오면서

조금 다른 방법이 추가 되었다. 그래서 두가지를 모두 사용할 수 있도록 코드가 작성되어있다.

참고로 xattr.h는 iOS5.0.1버전에 setxattr이라는 메서드를 사용하기 위해 호출되는 것이므로 5.0.1

이전 버전에 대한 처리를 하지 않을 경우에는 import하지 않아도 된다.




반응형



Spring DataSource설정 (DB설정)

<bean id="qcsDataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">

        <property name="driverClassName"value="${qcs.jdbc.driverClassName}"/>

        <property name="url" value="${qcs.jdbc.url}"/>

        <property name="username" value="${qcs.jdbc.username}"/>

        <property name="password" value="${qcs.jdbc.password}"/>

        <property name="maxActive" value="30"/>

        <property name="maxIdle" value="10"/>

        <property name="maxWait" value="1000"/>

        <property name="defaultAutoCommit" value="true"/>

</bean>



l  initialSize : 초기에 생성될 커넥션개수.

l  maxActive : 커넥션풀이 제공할 최대 커넥션개수.

l  maxIdle : 사용되지 않고 풀에 저장될수 있는 최대 커넥션개수음수일경우 제한없음.

l  minIdle : 사용되지 않고 풀에 저장될수 있는 최소 커넥션개수.

l  maxWait 풀에 커넥션이 존재하지 않을때커넥션이 풀에 다시 리턴되기까지 대기시간. 1/1000초단위, -1일경우 무한대기.

l  minEvictableIdleTimeMillis : 사용되지 않은 커넥션을 추출할 때이 속성에서 지정한 시간이상 비활성화 상태인 커넥션만 추출한다양수가 아닌 경우 비활성화 된 시간으로는 풀에서 제거 안됨.

l  timeBetweenEvictionRunsMillis : 사용되지 않은 커넥션을 추출하는 쓰레드의 실행주기를 설정양수가 아닌 경우 실행되지 않음.

l  numTestsPerEvictionRun : 사용되지 않은 커넥션을 몇 개 검사할지 지정.

l  testOnBorrow : true일 경우커넥션풀에서 커넥션을 가져올 경우커넥션이 유효한지 검사.

l  testOnReturn : true일 경우커넥션풀에 커넥션을 반환할 때커넥션이 유효한지 검사.

l  testWhileIdle : true일 경우비횔성화 커넥션을 추출할 때커넥션이 유효한지 검사해서 유효하지 않은 커넥션은 풀에서 제거.






참조 : 늘아침처럼


반응형





Alt + Shift + S, R 
 


반응형

'Programming > Java' 카테고리의 다른 글

SLF4J Guide (SLF4J 사용법)  (0) 2012.02.20