카테고리 보관물: iOS

애플 앱스토어 과세 논란에 대한 개인적인 정리

아이폰개발자 앱스토어 과세
문제는 세금이야, 이 바보야.

안드로이드 구글 플레이와 애플 앱스토어에 유료앱을 판매하는 입장으로써 아는 사실을 정리하자면

1. 구글 플레이는 원래 유료앱을 등록하려면 사업자 등록번호와 통신판매업신고번호가 필요했습니다. 고로 이번에 앱개발자는 무조건 사업자등록을 해야한다고 법이 바뀐게 아니라면 딱히 뭔가 변경되지는 않을 것 같습니다.

2. 애플 앱스토어는 원래 필요치 않았는데 이번에 유료, 무료 상관없이 모든 국내 계정에게 사업자 등록번호와 통신판매업신고번호를 요구하게 되었습니다. 그리고 해외 개발자 계정에게도 국내 판매를 하려면 CEO 이름, 주소, 전화번호, E-mail등을 요구하게 되었습니다. [기사]

3. 대부분의 앱 개발자들의 매출이 높지않아서 간이과세일거라는 얘기들을 봤는데 제가 알기로는 소프트웨어 개발 및 공급 업종은 간이과세배제 업종으로 무조건 일반과세자로 등록해야합니다. 그리고 통신판매업신고는 일반과세일 경우 년 4만5천원을 면허세로 내야합니다.  다른 업종으로 우회적으로(?) 등록하는 방법이 있을지는 모르겠는데 저는 그렇게 했습니다 ㅠㅠ

그래서 제 생각에는 통만판매업신고가 왜 필요하고 왜 소프트웨어 개발은 무조건 일반과세인지는 모르겠는데, 구글에서 유무료로 나눠서 시행하던 정책을 애플은 무조건 적용시킨게 문제를 크게 만든 것 같습니다. 무료앱을 만드는 사람이라면 앱스토어, 구글플레이 등록비외에 면허세까지 부담해야되는 상황이 되었고요. 해외 계정에 대해서도 국내 앱스토어에 판매할 경우 개인정보를 요구한 것도 뭔지 잘 모르겠는데 해외 개발사들의 국내앱 출시를 꺼리는 요인이 될 수 있지요. 셧다운제에 대해 엑스박스 라이브를 전면 차단하려고 했던 MS처럼 국내법에 일일이 대응하기보단 퉁쳐버리는 방식으로 아이폰 사용자가 10%정도되는 조그마한 시장이다보니 무관심한 것 같기도 하네요. 덕분에 사용자와 개발자만 힘들게 되었습니다.

 

[추가]

현재 앱스토어에 사업자등록란이 사라졌다고 하네요. 어떻게 전개가 될런지.. 구글 플레이 수준으로 바뀌는게 적정할 것 같네요.

앱스토어 개발자 등록 해프닝, 원인은 ‘전자상거래법’

[추가2]

참고로 티스토어, 올레마켓, U+앱마켓같은 국내 앱스토어는 사업자등록없이 개인사용자로 유료앱 판매가 가능했던걸로 기억.

 

iOS앱에 커스텀 폰트 사용하기

iOS 3.2부터 앱에 커스텀 글꼴을 포함시킬 수 있습니다.

폰트를 넣는 방법을 살펴보도록 하겠습니다.

1. 폰트파일(ttf나 otf)을 프로젝트 리소스에 추가합니다.

 

2. Info.plist 파일에 Add row로 ‘Fonts provided by application’라는 항목을 추가하고 그 아래에 String 항목으로 폰트 파일 이름을 추가합니다. (위에서 추가한 파일의 이름과 확장자를 그대로 입력해야 합니다.)

 

3. 앱 설치시 폰트가 같이 설치되도록 프로젝트 Targets의 Build Phases의 Copy Bundle Resources에 추가해줍니다.

 

4. 소스에서 UIFont로 읽어오려면 폰트의 이름을 알아야합니다. 폰트의 이름은 Finder에서 ‘정보 가져오기’로 확인할 수 있습니다.

또는 앱에서 인식한 모든 폰트들의 정보를 출력해서 확인할 수 있습니다.

for(NSString *familyName in [UIFont familyNames])
        NSLog(@"%@ : [ %@ ]",familyName,
              [[UIFont fontNamesForFamilyName:familyName] description]);

 

 

5. 위에서 알아낸 이름으로 UIFont를 얻어와서 UILabel 등에 설정해서 사용하시면 됩니다.

 self.dateLabel.font = [UIFont fontWithName:@"Nanum Pen Script OTF" size:self.dateLabel.font.pointSize];

XCode 4에서 NSZombieEnabled, NSDebugEnabled 설정 사용하기

NSZombieEnabled는 메모리를 해제하는 대신 NSZombie로 둠으로써 EXC_BAD_ACCESS같은 문제를 해결할 때 도움을 줍니다.

XCode 3에서는 Executables에서 프로젝트의 executable에 오른쪽 버튼으로 Get Info를 해서 Arguments의 Variables to be set in the environment에 NSZombieEnabled라는 variable을 추가하고 값을 YES로 해주면 활성화가 됩니다. (참조)

XCode 4에서는 Products에서 오른쪽 클릭을 해봐도 Get Info가 없는 것을 알 수 있습니다.
위에 메뉴를 보면 Product가 있는데 여기서 Edit Scheme에 들어가도록 합시다.

이제 여기서 Arguments에서 Environment Variables에 NSZombieEnabled, NSDebugEnabled와 같은 속성을 추가하면 됩니다.

또 다른 방법은 Diagnostics에서 옵션을 활성화해 줄 수도 있습니다.

다른 옵션들은 잘 모르겠는데 디버깅에 도움이 되는 옵션들로 보여집니다.

iOS 시뮬레이터에서 위치 이용

안드로이드 에뮬레이터는 말그대로 arm칩을 에뮬레이팅한 가상장치라 그지같은 속도로 욕을 많이 먹지만(잘 쓰지도 않음)
아이폰 시뮬레이터는 위치를 시뮬레이팅 해줄수가 없는 문제가 있다.
(update : Xcode 4.2의 시뮬레이터부터는 위치 시뮬레이팅을 지원한다)
이를 해결하기 위해서 시뮬레이터일 경우 코드상에서 특정 위치를 전송해주는 방법이다.

#if TARGET_IPHONE_SIMULATOR 

@interface CLLocationManager (Simulator)
@end

@implementation CLLocationManager (Simulator)

-(void)startUpdatingLocation {
    CLLocation *simulLoc = [[[CLLocation alloc] initWithLatitude:37.381 longitude:127.134] autorelease]; // 경도, 위도를 넣어주면 됨
    [self.delegate locationManager:self
               didUpdateToLocation:simulLoc 
                      fromLocation:simulLoc];    
}

@end

#endif // TARGET_IPHONE_SIMULATOR