336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


UIActivityViewController

안녕하세요. 개발자 myoung입니다.
오늘은 UIActivityViewController에 대해서 포스팅 하겠습니다.

UIActivityViewController는 간단하게 이미지, URL, 텍스트등 다른 앱 또는 AirDrop으로 쉽게 공유 할 수 있게 해주는 컨트롤러 입니다.

사용의 예

Alt text

UIActivityCategoryAction (지원하는 액션)

UIActivityTypePrint //프린트
UIActivityTypeCopyToPasteboard //복사하기
UIActivityTypeAssignToContact //전화번호부로
UIActivityTypeSaveToCameraRoll //사진첩으로
UIActivityTypeAddToReadingList
UIActivityTypeAirDrop //에어드랍
UIActivityCategoryShare

UIActivityTypeMessage (지원하는 기본 앱)

UIActivityTypeMail //메일로
UIActivityTypePostToFacebook //페이스북
UIActivityTypePostToTwitter //트위터
UIActivityTypePostToFlickr //플리커 (사진 공유 커뮤니티)
UIActivityTypePostToVimeo //비메오 (비디오)
UIActivityTypePostToTencentWeibo //텐센트웨이보
UIActivityTypePostToWeibo //웨이보 (중국 최대 SNS)

지원하는 데이터 타입

Activity Type String Attributed URL Data Image Asset Other
Post To Facebook
Post To Twitter
Post To Weibo
Message ✓* ✓* ✓* sms:// NSURL
Mail ✓+ ✓+ ✓+
Print ✓+ ✓+ UIPrintPageRenderer, UIPrintFormatter, & UIPrintInfo
Copy To Pasteboard UIColor, NSDictionary
Assign To Contact
Save To Camera Roll
Add To Reading List
Post To Flickr
Post To Vimeo
Post To Tencent Weibo
AirDrop

사용 방법

사용방법은 매우 간단합니다. UIActivityViewController를 정의 해주실때 배열 형식으로 아이템을 만들고 Present 하게 되면 아이템 종류에 따라 지원하는 앱, 지원하는 액션에 자동으로 선택되어서 공유하는 뷰가 밑에서 위로 올라옵니다.

let string: String = "텍스트"
let url: URL = "URL"
let img: UIImage = UIImage(named: "image")

let activityViewController = UIActivityViewController(activityItems: [string, url, img], applicationActivities: nil)
self.present(activityVC, animated: true, completion: { result in
}})

끝마치며

UIActivityViewController를 사용하게 되면 따로 FaceBook, Twitter등 다른 sms 공유가 매우 쉬워집니다. 굳이 SDK를 깔지 않아도 되는 장점이 있습니다. 자유도는 많이 떨어지지만 충분히 다른 앱에 공유하는게 가능해집니다. 좀더 나아가면 커스텀 파일등을 이용해서 백업파일 또는 나의 앱에서만 사용 할 수 있는 파일등을 앱에서 사용할수도 있습니다.

제 포스팅에 틀린점이나 수정해야할 상황이 있다면 언제든지 댓글로 알려주세요. :)



'iOS 프로그래밍 > iOS' 카테고리의 다른 글

iOS) UIAlertController-ActionSheet  (0) 2017.07.26
iOS) UIAlertController - alert  (0) 2017.07.11
iOS) JSON 타입 활용하기  (0) 2017.05.16
iOS) string에서 숫자만 꺼내오기  (0) 2017.05.01
iOS) 키보드 타입  (0) 2017.04.19
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



네번째로 소개할 앱은 콘티 메이크 입니다.

저는 교회를 다닙니다. 교회에서 가끔 컴퓨터를 잘 다루지 못하는 찬양 인도자들이 찬양콘티를 짜는데 있어서 

어려움을 많이 느끼는 것을 어렸을때부터 많이 봐와서 기회가 되면 "쉽게 찬양콘티를 만들수 있으면 얼마나 좋을까?"라는 질문에서 

작업을 시작하게 된 어플입니다.


콘티메이크 - 쉬운찬양콘티

지원OS - iOS

가격 - 무료

주요 기능


1) 여러 용지 지원
- A3가로, A4가로, A4세로 용지를 지원합니다.

2) 악보 분활 가능
- A3가로 8,6,4,3,2 분할
- A4가로 3,2 분할
- A4세로 4,2,1 분할

3) 악보 검색 및 다운로드
- 쉬운 검색 및 악보 다운로드

4) 분할에 맞춰서 콘티 구성 자동 정렬
- 콘티 구성에 대한 정보 (용지, 분할, 목록)

5) 공유하기
- 이메일, SNS, 프린트

6) 예전 콘티 보기
- 날짜별로 자기가 만든 콘티를 볼수 있습니다.
- 콘티를 공유한 뒤 완료를 눌러야 저장됩니다.

7) 저장된 악보 보기
- 지금 까지 사용된 악보를 볼 수 있습니다.
- 콘티를 공유한 뒤 완료를 눌러야 저장됩니다. 


스크린샷

  

  



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


Json 타입 활용하기

안녕하세요. 개발자 myoung입니다. 오늘은 JSON에 대해서 포스팅할려고 합니다.
JSON는 간략한 설명입니다.

JSON(제이슨[1], JavaScript Object Notation)은 속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 
비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포맷이다. 특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다. 
자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다.
본래는 자바스크립트 언어로부터 파생되어 자바스크립트의 구문 형식을 따르지만 언어 독립형 데이터 포맷이다. 
즉, 프로그래밍 언어나 플랫폼에 독립적이므로, 구문 분석 및 JSON 데이터 생성을 위한 코드는 C, C++, C#, 자바, 자바스크립트, 펄, 파이썬 등 수많은 프로그래밍 언어에서 쉽게 이용할 수 있다.
JSON 포맷은 본래 더글라스 크록포드가 규정하였다. RFC 7159와 ECMA-404라는 두 개의 경쟁 표준에 의해 기술되고 있다. 
ECMA 표준은 문법만 정의할 정도로 최소한으로만 정의되어 있는 반면 RFC는 시맨틱, 보안적 고려 사항을 일부 제공하기도 한다.
[2] JSON의 공식 인터넷 미디어 타입은 application/json이며, JSON의 파일 확장자는 .json이다.
출처 - 위키피디아

많이 활용 되고 알기 쉽게 데이터를 분류 할 수 있는 강력한 포맷중 하나입니다. Objective-C, Swift 에서는 NSDictionary, Dictionary 형태와 갔다고 보면 될 것 같습니다.

Dictionry타입을 JSON 타입으로 변환하는 코드 입니다.

do {
    let jsonData = try JSONSerialization.data(withJSONObject: your_dictiony, options: .prettyPrinted)
    print(jsonData)
} catch {
    print(error)
}

JSON타입을 String타입으로 변환하는 코드 입니다.

do {
    let convertedString = String(data: you_jsonType, encoding: String.Encoding.utf8)
    print(convertedString!)
} catch {
    print(error)
}

JSON타입을 Dictionary타입으로 변환하는 코드입니다.

do {
    let backup_data = arr_authText?[0].data(using: .utf8)
    let decoded = try JSONSerialization.jsonObject(with: backup_data!, options: [])

    if let dictFromJSON = decoded2 as? [String:Any] {
        //원하는 Dictionary, Array타입으로 캐스팅 하면 됩니다.
        print(dicFromJSON)
    }
} catch {
    print(error)
}

JSON 타입은 서버랑 통신 할때 주로 많이 쓰이는 것 같습니다. Swift 라이브러리로는 “SwiftyJSON”이 있습니다.
간단하게 아니라 주로 사용한다면 라이브러리를 사용하는 것을 권장합니다.(정신건강을 위해서라도요..)

틀린점이 있다면 언제든지 댓글을 달아주세요 :)



'iOS 프로그래밍 > iOS' 카테고리의 다른 글

iOS) UIAlertController - alert  (0) 2017.07.11
iOS)UIActivityViewController  (0) 2017.06.15
iOS) string에서 숫자만 꺼내오기  (0) 2017.05.01
iOS) 키보드 타입  (0) 2017.04.19
iOS) UITextField 간단하게 좌우 여백 주기  (0) 2017.02.20
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


String에서 숫자만 꺼내오기

안녕하세요. 개발자 Myoung 입니다. 오늘 포스팅 내용은 String안에서 숫자만 검색해서 index와 무슨 숫자인지 알 수 있는 방법입니다.

let digitSet = CharacterSet.decimalDigits

for (index, ch) in myString.unicodeScalars.enumerated() {
    if digitSet.contains(ch) {
        print("\(index), \(ch),  숫자입니다”)
    }
}


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


안녕하세요. 개발자 myoung입니다.
Custom FrameWork 만들어 사용할때 클래스를 찾을 수 없을 때 해결 방안입니다.
Custom FrameWork를 만들어서 빌드후 프로젝트에 추가를 하게되면 시뮬레이터에서 돌렸을 때는 실제 프로젝트에서 시뮬레이터에서만 사용이 가능하고, 실제기기에서 돌렸을 때는 실제기기로 빌드를 할때만 사용이 가능합니다.

BUild Phases에 Run Script를 추가해준 다음 추가해 주시면 됩니다.


######################
# Options
######################

REVEAL_ARCHIVE_IN_FINDER=false

FRAMEWORK_NAME="${PROJECT_NAME}"

SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework"

DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework"

UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal"

FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework"


######################
# Build Frameworks
######################

xcodebuild -workspace ${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 2>&1

xcodebuild -workspace ${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos 2>&1

######################
# Create directory for universal
######################

rm -rf "${UNIVERSAL_LIBRARY_DIR}"

mkdir "${UNIVERSAL_LIBRARY_DIR}"

mkdir "${FRAMEWORK}"


######################
# Copy files Framework
######################

cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}"


######################
# Make an universal binary
######################

lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}" "${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output "${FRAMEWORK}/${FRAMEWORK_NAME}" | echo

# For Swift framework, Swiftmodule needs to be copied in the universal framework
if [ -d "${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
cp -f ${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
                                                                      fi

                                                                      if [ -d "${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
                                                                      cp -f ${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
                                                                      fi

                                                                      ######################
                                                                      # On Release, copy the result to release directory
                                                                      ######################
                                                                      OUTPUT_DIR="${PROJECT_DIR}/Output/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/"

                                                                      rm -rf "$OUTPUT_DIR"
                                                                      mkdir -p "$OUTPUT_DIR"

                                                                      cp -r "${FRAMEWORK}" "$OUTPUT_DIR"

                                                                      if [ ${REVEAL_ARCHIVE_IN_FINDER} = true ]; then
                                                                      open "${OUTPUT_DIR}/"
                                                                      fi

이렇게 되면 Custom Framework가 universal 형태로 만들어져서 프로젝트에 적용 하면 시뮬레이터나 실제기기에서도 상관없이 사용이 가능합니다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


iOS 키보드 타입

안녕하세요. 개발자 Myoung 입니다.
오늘은 iOS 키보드 타입에 대한 포스팅입니다. Objective-C,Swift 둘다 해당되는 타입형태입니다. UITextFeild, UITextView등 키보드를 사용하는 뷰에서 사용됩니다.



키보드 타입 종류

typedef enum {
        UIKeyboardTypeDefault,                  // 기본적인 키보드
        UIKeyboardTypeASCIICapable,             // 영문만 표시되는 키보드
        UIKeyboardTypeNumbersAndPunctuation,    // 숫자와 특수문자가 표시되는 키보드
        UIKeyboardTypeURL,                      // URL을 입력할 수 있도록 .과 / 그리고 .com이 키보드 영역에 표시되는 키보드
        UIKeyboardTypeNumberPad,                // 숫자를 입력하는 키패드 형식의 키보드
        UIKeyboardTypePhonePad,                 // 전화 번호를 입력할 수 있는 키패드 형식의 키보드
        UIKeyboardTypeNamePhonePad,             // 대문자 입력이 불가한 키보드
        UIKeyboardTypeEmailAddress,             // 이메일을 입력할 수 있도록 @와 .이 키보드 영역에 표시되는 키보드
        UIKeyboardTypeDecimalPad,               // 소숫점을 입력할 수 있는 키패드 형식의 키보드
        UIKeyboardTypeTwitter,                  // 트위터 입력을 빠르게 할 수 있도록 @와 #이 추가된 키보드
        UIKeyboardTypeWebSearch,                // URL 및 검색어 입력에 최적화 됨 (공백 및. 표시)
        UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // 더 이상 사용 안함
    } UIKeyboardType;


사용법

사용법은 매우 간단 합니다. 코드로는 setKeyboardType을 사용하시면 됩니다.

ObjectiveC

[textField setKeyboardType:UIKeyboardTypeEmailAddress]

Swift

textField.keyboardType = .default

스토리 보드 상에서는 UITextFeild, UITextView View에 추가 하신 후 오른쪽 항목에서 보시면 KeyBoard Type이 있습니다. 거기서 적절하게 선택 해주시면 됩니다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요.

오늘은 텍스트 필드에 여백을 주는 방법에 대해서 포스팅 하겠습니다.

UITextView는 동서남북 여백을 줄 수 있지만 UITextField는 UITextView방식으로는 여백을 줄이고 늘릴수가 없습니다.

그래서 UIView안에 UITextField를 넣고 여백을 주는 방법도 있지만 rightView와 leftView를 통해서 여백을 줄수 있습니다.


extension을 통해 UITextField에 메소드를 추가해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
extension UITextField {
    func setLeftPaddingPoints(_ amount:CGFloat){ //왼쪽에 여백 주기
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
        self.leftView = paddingView
        self.leftViewMode = .always
    }
 
    func setRightPaddingPoints(_ amount:CGFloat) { //오른쪽에 여백 주기
        let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: amount, height: self.frame.size.height))
        self.rightView = paddingView
        self.rightViewMode = .always
    }
}
 
//사용방법
let textfield = UITextField(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
textfield.setLeftPaddingPoints(20)
textfield.setRightPaddingPoints(20
cs

이런식으로 사용 하시면 됩니다. 

잘못된 점이 있으면 댓글 말씀해주시면 수정하겠습니다.

감사합니다.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



생활하는 침대가 2층침대여서 1층을 어떻게 활용할까 하다가,, 

집에 남는 모니터를 설치하고 누워서 영상 보는 곳으로 활용하기로 결정을 했습니다.

하지만 가용가능한 pc또는 노트북이 없기에.. 하나 사야지 하면서 알아보다가 덩치큰 PC 또는 노트북은 싫어서 

보다 공간도 덜 차지하는 USB모양의 스틱pc로 샀습니다!


제품명

모두시스 트윙글 2세대 스틱pc


가격

21만원 (구입한 날짜 기준입니다.)


사양

CPU - Intel ATOM Cherry Trail x5-Z8300

RAM - 4GB

용량 - 32GB

블루투스 -  Bluetooth 4.0

USB - USB3.0 x 1, USB2.0 x 1

운영체제 - Window10 HOME 64비트


사진

 .   


장점

 - 소음이 생각보다 적습니다.

 - 문서작업 및 영상 보는데는 전혀 문제가 없습니다. ( 윈도우 기본 플레이어로 해야된다.. SIM 미지원..)

 - USB단자가 두개 입니다.


단점

 - 기본적인 용량이 32gb로 부족(마이크로 sd카드로 128기가 까지 확장 가능)합니다. 프로그램 몇개 깔지도 않았는데 벌써 10gb정도 밖에 남지 않았습니다.

 - 블루투스 스피커가 이상해서 그런지 끊김이 심합니다. 그래서 모니터 Aux에 연결해서 사용하고 있습니다. (본체 자체에는 aux단자 없습니다.)

 - 다음팟플레이어로 동영상을 실행시 끊겨서 윈도우 기본 플레이어로 영상 재생


사용 후기

수치만으로는 사용할만한 PC이지만 아톰시리즈와 소형화 때문인지 체감되는 성능은 별로지만.. 

문서 작업 및 영상, 웹서핑은 무리 없이 할수 있는 정도 였고, 기본 플레이어로 영상을 실행시 전혀 무리 없이 잘 소화 하는 스틱 PC였다. 

심지어 전원도 5V 3A 이면 전원이 켜질수 있기에 3A를 지원하는 보조 배터리가 있으면 충분히 밖에서도 사용할 수 있지 않을까 싶다. (3A를 지원하는 보조배터리는 국내에서 유통되는 제품이 하나밖에 없다.) 

전체적으로 퍼포먼스는 부족하지만 퍼포먼스를 바라면서 산것이 아니기 때문에 충분히 만족한다. 여담이지만 당연히 게임은 꿈도 꾸면 안된다..



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. iOS 개발을 하고 있는 Myoung 입니다.


UI를 그리다보면 BorderWidth 와 BorderColor를 이용해서 View의 테투리를 그려줄때가 많습니다.

일반적으로 border를 이용해서 그리는 방법은 이렇게 사용을 합니다. 그럼 테투리가 자연스럽게 Width 만큼생기게 되죠.

1
2
3
4
let view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
view.layer.borderColor = UIColor.red.cgColor
view.layer.borderWidth = 1.0
view.addSubview(view)
cs


하지만 UI를 그리다보면 한쪽만 혹은 한쪽을 남겨두고 그릴때가 있습니다. 

extension을 통해 CALayer에 메소드를 추가해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
extension CALayer {
    func addBorder(_ arr_edge: [UIRectEdge], color: UIColor, width: CGFloat) {
        for edge in arr_edge {
            let border = CALayer()
            switch edge {
            case UIRectEdge.top:
                border.frame = CGRect.init(x: 0, y: 0, width: frame.width, height: width)
                break
            case UIRectEdge.bottom:
                border.frame = CGRect.init(x: 0, y: frame.height - width, width: frame.width, height: width)
                break
            case UIRectEdge.left:
                border.frame = CGRect.init(x: 0, y: 0, width: width, height: frame.height)
                break
            case UIRectEdge.right:
                border.frame = CGRect.init(x: frame.width - width, y: 0, width: width, height: frame.height)
                break
            default:
                break
            }
            border.backgroundColor = color.cgColor;
            self.addSublayer(border)
        }
    }
}
cs


사용법은 간단합니다. 원하는 뷰에 layer를 통해서 사용 하시면 됩니다. 

1
your_view.layer.addBorder([.top, .bottom], color: UIColor.white, width: 1.0)
cs

UIRectEdge의 속성은 총 다섯개가 있습니다.

1
2
3
4
5
UIRectEdge.all, //전체 
UIRectEdge.top, //상단
UIRectEdge.bottom, //하단
UIRectEdge.left, //왼쪽
UIRectEdge.right, //오른쪽
cs

원하는 방향을 Array로 묶어서 layer를 통해 추가해주시면 됩니다. 이왕이면.. 한쪽만 뻥뚫린 UI가 없었으면 하지만 생각보다 간단하게 해결 할 수 있습니다.


틀린점이나 오타 부족한점이 있으면 언제든지 댓글를 남겨주세요.



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



안녕하세요. 오랜만에 글을 남깁니다.

연말인데 올해 계획을 잘 마무리 짓고 계신가요? 


오늘은 iOS의 퍼미션 종류를 알아보겠습니다. iOS10부터는 퍼미션 항목을 빼먹으면 검사 후 아예 아이튠즈에 안 올라가고, 바로 추가해 달라고 등록된 메일이 옵니다.

앱을 만들다보면 퍼미션을 까먹고 사진을 불러온다던가 위치를 알아올때 왜 안 가져오지 하면서 구글 검색을 하기 마련입니다. (아닌가요..?ㅎㅎ) 

퍼미션 종류와 info.plist에 들어가는 이름입니다.


  • (블루투스)Bluetooth Sharing – NSBluetoothPeripheralUsageDescription 
  • (달력)Calendar – NSCalendarsUsageDescription
  • (전화 관련)CallKit – NSVoIPUsageDescription
  • (카메라)Camera – NSCameraUsageDescription
  • (연락처)Contacts – NSContactsUsageDescription
  • (건강)Health – NSHealthShareUsageDescription & NSHealthUpdateUsageDescription
  • (홈킷)HomeKit – NSHomeKitUsageDescription
  • (위치)Location – NSLocationUsageDescription, NSLocationAlwaysUsageDescription, NSLocationWhenInUseUsageDescription
  • (미디어 라이브러리)Media Library – NSAppleMusicUsageDescription
  • (마이크)Microphone – NSMicrophoneUsageDescription
  • (모션)Motion – NSMotionUsageDescription
  • (사진, 앨범)Photos – NSPhotoLibraryUsageDescription
  • (미리알림)Reminders – NSRemindersUsageDescription
  • (음성 인식)Speech Recognition – NSSpeechRecognitionUsageDescription
  • (시리킷)SiriKit – NSSiriUsageDescription
  • (TV 프로 바이더)TV Provider – NSVideoSubscriberAccountUsageDescription


까먹지 말고 추가해주시면 될거 같습니다.

마지막까지 계획하신거 잘 마무리 하시고 2017년을 맞이하는 개발자가 되었으면 합니다.!



+ Recent posts