쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
해당 지식과 관련있는 인기재능

 안녕하세요. 안드로이드 기반 개인 앱, 프로젝트용 앱부터 그 이상 기능이 추가된 앱까지 제작해 드립니다.  - 앱 개발 툴: 안드로이드...

 운영하는 사이트 주소가 있다면 사이트를 안드로이드 앱으로 만들어 드립니다.기본 5000원은 아무런 기능이 없고 단순히 html 페이지를 로딩...

안녕하세요.신호처리를 전공한 개발자 입니다. 1. 영상신호처리, 생체신호처리 알고리즘 개발2. 안드로이드 앱 개발 3. 윈도우 프로그램...

소개안드로이드 기반 어플리케이션 개발 후 서비스를 하고 있으며 스타트업 경험을 통한 앱 및 서버, 관리자 페이지 개발 경험을 가지고 있습니다....

iOS 앱 내 결제: StoreKit 프레임워크 활용

2024-12-05 04:45:55

재능넷
조회수 21 댓글수 0

iOS 앱 내 결제: StoreKit 프레임워크 활용 🚀💰

 

 

안녕하세요, 여러분! 오늘은 iOS 앱 개발자들의 필수 스킬 중 하나인 앱 내 결제(In-App Purchase)에 대해 깊이 있게 파헤쳐볼 거예요. 특히 Apple의 StoreKit 프레임워크를 활용해서 어떻게 쉽고 효과적으로 결제 시스템을 구현할 수 있는지 알아볼 거랍니다. 😎

앱 내 결제는 개발자들에게 정말 중요한 기능이에요. 여러분의 앱이 아무리 멋지고 유용해도, 수익을 창출하지 못한다면 지속 가능한 개발은 힘들어지겠죠? 그래서 오늘 우리는 이 핵심적인 주제에 대해 깊이 파고들 거예요. 마치 재능넷에서 다양한 재능을 거래하듯이, 우리도 앱을 통해 우리의 재능(기능)을 사용자들에게 "판매"하는 방법을 배워볼 거예요! 🎨💻

자, 이제 StoreKit의 세계로 뛰어들 준비 되셨나요? 그럼 시작해볼까요? 🏊‍♂️💨

1. StoreKit이 뭐길래? 🤔

StoreKit? 처음 들어보시는 분들도 계실 거예요. 간단히 말해서, StoreKit은 Apple이 제공하는 프레임워크로, iOS 앱에서 결제 관련 기능을 쉽게 구현할 수 있도록 도와주는 도구예요. 마치 재능넷이 재능 거래를 위한 플랫폼을 제공하듯이, Apple은 개발자들에게 결제 시스템을 위한 플랫폼을 제공하는 거죠! 👨‍🔧🛠️

StoreKit을 사용하면 다음과 같은 것들을 할 수 있어요:

  • 앱 내에서 디지털 상품 판매하기 (예: 프리미엄 기능 해제, 게임 내 아이템 등)
  • 구독 서비스 제공하기 (예: 월간 VIP 멤버십)
  • 실제 상품에 대한 Apple Pay 결제 처리하기
  • 앱 내 광고 제거 옵션 제공하기

ㅋㅋㅋ 이거 완전 대박 아니에요? 이제 여러분도 앱으로 돈 벌 수 있는 거예요! 🤑💸

🔑 핵심 포인트: StoreKit은 iOS 앱에서 결제 기능을 쉽게 구현할 수 있게 해주는 Apple의 프레임워크예요. 이를 통해 다양한 형태의 디지털 상품을 판매하고 수익을 창출할 수 있답니다!

자, 이제 StoreKit이 뭔지 대충 감이 오시죠? 그럼 이제 본격적으로 StoreKit을 어떻게 사용하는지 알아볼까요? 🕵️‍♂️🔍

2. StoreKit 시작하기: 기본 설정 💼

StoreKit을 사용하기 위해서는 먼저 몇 가지 기본적인 설정이 필요해요. 마치 요리를 시작하기 전에 재료를 준비하는 것처럼요! 🥕🍳

2.1. Xcode 프로젝트 설정

먼저 Xcode에서 새 프로젝트를 만들거나 기존 프로젝트를 열어주세요. 그리고 다음 단계를 따라해볼까요?

  1. 프로젝트 네비게이터에서 프로젝트 파일을 선택해요.
  2. 타겟 설정에서 'Signing & Capabilities' 탭을 클릭해요.
  3. '+ Capability' 버튼을 클릭하고 'In-App Purchase'를 추가해요.

이렇게 하면 Xcode가 자동으로 필요한 설정을 추가해줘요. 완전 편하죠? 😎👍

2.2. App Store Connect 설정

이제 App Store Connect에서도 몇 가지 설정을 해줘야 해요. 여기서 실제로 판매할 상품들을 등록하고 관리할 수 있어요.

  1. App Store Connect (https://appstoreconnect.apple.com)에 로그인해요.
  2. '나의 앱'에서 해당 앱을 선택해요.
  3. '기능' 탭에서 '인앱 구입'을 클릭해요.
  4. '+'버튼을 눌러 새로운 인앱 구입 항목을 추가해요.

여기서 상품의 이름, 가격, 설명 등을 입력할 수 있어요. 마치 재능넷에서 자신의 재능을 소개하듯이, 여러분의 디지털 상품을 멋지게 소개해보세요! 🌟✨

💡 꿀팁: 상품 ID는 나중에 코드에서 사용할 거예요. 그러니까 기억하기 쉬운 이름으로 지어주세요! 예를 들면 'com.myapp.premium_upgrade' 같은 식으로요.

2.3. 샌드박스 테스터 설정

실제 돈을 쓰지 않고도 결제 기능을 테스트할 수 있어요. 이를 위해 샌드박스 테스터를 설정해야 해요.

  1. App Store Connect에서 '사용자 및 액세스'로 이동해요.
  2. '샌드박스 > 테스터'를 선택해요.
  3. '새로운 테스터 추가' 버튼을 클릭해요.
  4. 테스터의 이메일 주소와 기타 정보를 입력해요.

이제 이 테스터 계정으로 로그인하면 실제 결제 없이도 인앱 구매를 테스트할 수 있어요. 완전 꿀이죠? 🍯🐝

StoreKit 설정 과정 Xcode 설정 App Store Connect 설정 샌드박스 테스터 설정

자, 이제 기본적인 설정은 끝났어요! 🎉 다음 단계로 넘어가볼까요?

3. StoreKit 코드 구현하기 👨‍💻

이제 진짜 재미있는 부분이 시작됩니다! 코드를 통해 StoreKit을 구현해볼 거예요. 마치 레고 블록을 조립하듯이, 하나씩 차근차근 만들어볼게요! 🧱🏗️

3.1. StoreKit 임포트하기

먼저, StoreKit을 사용하기 위해 필요한 프레임워크를 임포트해야 해요. 여러분의 ViewController 파일 맨 위에 다음 코드를 추가해주세요:

import StoreKit

이렇게 하면 StoreKit의 모든 기능을 사용할 수 있게 돼요. 완전 쉽죠? 😄

3.2. 상품 정보 가져오기

이제 App Store Connect에서 등록한 상품 정보를 가져와볼 거예요. 이를 위해 SKProductsRequest를 사용할 거예요.

class ViewController: UIViewController, SKProductsRequestDelegate {
    
    var products: [SKProduct] = []
    
    func fetchProducts() {
        let productIDs = Set(["com.myapp.premium_upgrade"])
        let request = SKProductsRequest(productIdentifiers: productIDs)
        request.delegate = self
        request.start()
    }
    
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
        self.products = response.products
        DispatchQueue.main.async {
            // 여기서 UI를 업데이트해요
        }
    }
}

우와, 이게 뭔가 싶죠? 😅 하나씩 설명해드릴게요!

  • fetchProducts() 함수는 App Store에서 상품 정보를 요청해요.
  • productIDs는 우리가 App Store Connect에서 등록한 상품 ID예요.
  • SKProductsRequest는 실제로 상품 정보를 요청하는 객체예요.
  • productsRequest(_:didReceive:) 함수는 상품 정보를 받았을 때 호출돼요.

이렇게 하면 App Store에서 상품 정보를 가져올 수 있어요. 마치 재능넷에서 재능 정보를 검색하는 것처럼요! 🔍👀

3.3. 구매 기능 구현하기

이제 실제로 구매 기능을 구현해볼 거예요. 이를 위해 SKPaymentQueue를 사용할 거예요.

class ViewController: UIViewController, SKPaymentTransactionObserver {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        SKPaymentQueue.default().add(self)
    }
    
    func buyProduct(_ product: SKProduct) {
        if SKPaymentQueue.canMakePayments() {
            let payment = SKPayment(product: product)
            SKPaymentQueue.default().add(payment)
        } else {
            print("사용자가 결제를 할 수 없어요 ㅠㅠ")
        }
    }
    
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        for transaction in transactions {
            switch transaction.transactionState {
            case .purchased:
                // 구매 성공!
                print("야호! 구매 성공이에요! 🎉")
                SKPaymentQueue.default().finishTransaction(transaction)
            case .failed:
                // 구매 실패 ㅠㅠ
                print("앗, 구매에 실패했어요 😢")
                SKPaymentQueue.default().finishTransaction(transaction)
            case .restored:
                // 구매 복원
                print("이전 구매를 복원했어요 🔄")
                SKPaymentQueue.default().finishTransaction(transaction)
            case .deferred, .purchasing:
                break
            @unknown default:
                break
            }
        }
    }
}

우와, 코드가 좀 길어졌죠? 😅 하지만 걱정 마세요! 하나씩 뜯어볼게요.

  • viewDidLoad()에서 SKPaymentQueue에 현재 뷰 컨트롤러를 옵저버로 추가해요. 이렇게 하면 결제 상태 변화를 감지할 수 있어요.
  • buyProduct(_:) 함수는 실제로 구매를 시작하는 함수예요. 사용자가 결제할 수 있는지 확인하고, 가능하다면 결제를 시작해요.
  • paymentQueue(_:updatedTransactions:) 함수는 결제 상태가 변할 때마다 호출돼요. 여기서 결제 성공, 실패, 복원 등의 상황을 처리할 수 있어요.

🚀 Pro Tip: 실제 앱에서는 구매 성공 시 사용자에게 프리미엄 기능을 제공하거나, 구매 실패 시 적절한 에러 메시지를 보여주는 등의 처리를 해야 해요!

이렇게 하면 기본적인 인앱 구매 기능이 구현됐어요! 완전 대박이죠? 🎊🎉

StoreKit 구매 프로세스 상품 정보 요청 구매 시작 결제 처리 구매 완료 결제 상태 ✅ 성공 ❌ 실패 🔄 복원

자, 이제 기본적인 StoreKit 구현은 끝났어요! 하지만 아직 끝이 아니에요. 더 많은 기능들이 기다리고 있답니다! 😉

4. 고급 기능: 구독과 프로모션 오퍼 🎁

자, 이제 좀 더 심화된 내용으로 들어가볼까요? StoreKit은 단순한 일회성 구매 외에도 다양한 기능을 제공해요. 특히 구독과 프로모션 오퍼는 많은 앱에서 사용되는 중요한 기능이에요. 마치 재능넷에서 프리미엄 멤버십을 제공하는 것처럼 말이죠! 🌟

4.1. 구독 구현하기

구독은 일정 기간 동안 서비스를 이용할 수 있게 해주는 결제 방식이에요. 넷플릭스나 스포티파이 같은 서비스를 생각하면 돼요! 구독을 구현하는 방법을 알아볼까요?

func purchaseSubscription(_ product: SKProduct) {
    let payment = SKPayment(product: product)
    SKPaymentQueue.default().add(payment)
}

func renewSubscription(_ product: SKProduct) {
    // 구독 갱신 로직
    let payment = SKPayment(product: product)
    SKPaymentQueue.default().add(payment)
}

func cancelSubscription() {
    // 사용자에게 설정 앱으로 이동하라고 안내
    if let url = URL(string: "App-Prefs:root=STORE") {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}

우와, 이게 뭔가 싶죠? 😅 하나씩 설명해드릴게요!

  • purchaseSubscription(_:): 새로운 구독을 시작할 때 사용해요.
  • renewSubscription(_:): 구독을 갱신할 때 사용해요. 대부분의 경우 자동으로 처리되지만, 수동 갱신이 필요한 경우 이 함수를 호출할 수 있어요.
  • cancelSubscription(): 구독을 취소할 때 사용해요. 실제로 구독 취소는 설정 앱에서 해야 하므로, 사용자를 설정 앱으로 안내해요.

🎈 주의사항: 구독은 복잡한 주제예요! 구독 기간, 갱신, 유예 기간 등 고려해야 할 사항이 많답니다. Apple의 공식 문서를 꼭 참고해주세요!

4.2. 프로모션 오퍼 구현하기

프로모션 오퍼는 사용자에게 특별한 할인이나 무료 체험 기간을 제공하는 기능이에요. 이걸 잘 활용하면 사용자들의 마음을 사로잡을 수 있죠! 😍

func fetchPromotionalOffer(for product: SKProduct) -> SKPaymentDiscount? {
    guard let discounts = product.discounts, !discounts.isEmpty else {
        return nil
    }
    
    // 여기서는 첫 번째 할인을 사용한다고 가정해요
    let discount = discounts[0]
    
    let signature = // 서버에서 받아온 서명
    let timestamp = // 서버에서 받아온 타임스탬프
    let identifier = discount.identifier
    let keyIdentifier = "YourKeyIdentifier"
    let nonce = UUID()
    
    return SKPaymentDiscount(identifier: identifier,
                             keyIdentifier: keyIdentifier,
                             nonce: nonce,
                             signature: signature,
                             timestamp: timestamp)
}

func purchaseWithPromotion(_ product: SKProduct) {
    guard let discount = fetchPromotionalOffer(for: product) else {
        print("프로모션 오퍼를 찾을 수 없어요 😢")
        return
    }
    
    let payment = SKMutablePayment(product: product)
    payment.paymentDiscount = discount
    SKPaymentQueue.default().add(payment)
}

우와, 이건 좀 복잡해 보이네요! 😅 하지만 걱정 마세요, 하나씩 설명해드릴게요.

  • fetchPromotionalOffer(for:): 특정 상품에 대한 프로모션 오퍼를 가져와요. 실제로는 서버와의 통신이 필요할 수 있어요.
  • purchaseWithPromotion(_:): 프로모션 오퍼를 적용해서 구매를 진행해요.

프로모션 오퍼를 사용하려면 서버 측 구현도 필요해요. 서명과 타임스탬프를 안전하게 생성하고 관리해야 하거든요. 이 부분은 백엔드 개발자와 협력이 필요할 수 있어요! 👨‍💻👩‍💻

구독과 프로모션 오퍼 프로세스 구독 • 구독 시작 • 구독 갱신 • 구독 취소 프로모션 오퍼 • 할인 정보 가져오기 text x="480" y="160" font-family="Arial" font-size="16" fill="white">• 할인 적용 구매 • 서버 통신 필요 사용자 경험 향상된 가치 제공

자, 이제 구독과 프로모션 오퍼에 대해 알아봤어요. 이런 기능들을 잘 활용하면 사용자들에게 더 큰 가치를 제공할 수 있답니다! 🚀

5. 베스트 프랙티스와 주의사항 🏆

StoreKit을 사용할 때 알아두면 좋은 베스트 프랙티스와 주의사항들이 있어요. 이걸 잘 지키면 여러분의 앱이 더욱 안정적이고 사용자 친화적이 될 거예요! 마치 재능넷에서 최고의 서비스를 제공하는 것처럼 말이죠! 😉

5.1. 영수증 검증하기

구매가 완료되면 항상 영수증을 검증해야 해요. 이는 보안상 매우 중요한 단계예요!

func verifyReceipt(completion: @escaping (Bool) -> Void) {
    guard let receiptURL = Bundle.main.appStoreReceiptURL,
          let receiptData = try? Data(contentsOf: receiptURL) else {
        completion(false)
        return
    }
    
    let receiptString = receiptData.base64EncodedString(options: [])
    
    // 여기서 서버로 영수증을 보내 검증해야 해요
    // 실제 구현은 서버 측에서 이루어져야 합니다
    
    // 임시로 항상 true를 반환하도록 설정
    completion(true)
}

실제로는 이 영수증을 서버로 보내서 Apple의 검증 서버와 통신해야 해요. 클라이언트에서 직접 하면 안 돼요! 보안 때문이죠. 🔒

5.2. 오프라인 지원

사용자가 오프라인 상태일 때도 앱을 사용할 수 있게 해주는 것이 좋아요. 구매 정보를 로컬에 저장하고, 온라인 상태가 되면 동기화하는 방식을 사용할 수 있어요.

func saveProductLocally(_ product: SKProduct) {
    UserDefaults.standard.set(true, forKey: product.productIdentifier)
}

func isProductPurchased(_ productID: String) -> Bool {
    return UserDefaults.standard.bool(forKey: productID)
}

func syncPurchases() {
    // 온라인 상태가 되면 서버와 구매 정보를 동기화해요
    // 실제 구현은 더 복잡할 수 있어요!
}

이렇게 하면 사용자가 오프라인 상태에서도 구매한 기능을 이용할 수 있어요. 완전 편리하죠? 😎

5.3. 사용자 친화적인 UI

구매 과정은 사용자에게 명확하고 간단해야 해요. 복잡하면 사용자가 포기할 수도 있거든요! 😱

  • 상품 설명을 명확하게 제공하세요.
  • 가격을 눈에 띄게 표시하세요.
  • 구매 버튼은 크고 분명하게 만드세요.
  • 구매 진행 상황을 보여주는 로딩 인디케이터를 사용하세요.
  • 구매 성공/실패 메시지를 친절하게 표시하세요.

💡 Pro Tip: A/B 테스트를 통해 어떤 UI가 가장 효과적인지 확인해보세요. 작은 변화가 큰 차이를 만들 수 있어요!

5.4. 에러 처리

StoreKit 사용 중 발생할 수 있는 다양한 에러 상황에 대비해야 해요. 사용자에게 친절한 에러 메시지를 제공하는 것이 중요해요.

func handleError(_ error: Error) {
    var message = "구매 중 오류가 발생했어요. 다시 시도해주세요."
    
    if let skError = error as? SKError {
        switch skError.code {
        case .paymentCancelled:
            message = "구매가 취소되었어요."
        case .paymentInvalid:
            message = "결제 정보가 올바르지 않아요."
        case .paymentNotAllowed:
            message = "이 기기에서는 결제할 수 없어요."
        default:
            break
        }
    }
    
    // 사용자에게 에러 메시지를 보여주는 코드
    showAlert(message: message)
}

func showAlert(message: String) {
    let alert = UIAlertController(title: "알림", message: message, preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "확인", style: .default, handler: nil))
    present(alert, animated: true, completion: nil)
}

이렇게 하면 사용자가 무슨 문제가 있었는지 이해하기 쉬워져요. 친절한 앱이 되는 거죠! 😊

StoreKit 베스트 프랙티스 영수증 검증 오프라인 지원 사용자 친화적 UI 에러 처리 안정적이고 사용자 친화적인 StoreKit 구현 더 나은 사용자 경험과 수익 창출

자, 이제 StoreKit을 사용할 때 주의해야 할 점들을 알아봤어요. 이런 사항들을 잘 지키면 여러분의 앱은 더욱 안정적이고 사용자 친화적이 될 거예요! 🌟

6. 마무리: StoreKit의 미래 🔮

우와, 정말 긴 여정이었죠? 🚶‍♂️🚶‍♀️ StoreKit에 대해 많은 것을 배웠어요. 하지만 기술의 세계는 계속 변화하고 있어요. Apple도 계속해서 StoreKit을 개선하고 있답니다.

6.1. StoreKit 2

최근 Apple은 StoreKit 2를 발표했어요. 이는 기존 StoreKit의 많은 부분을 개선하고 새로운 기능을 추가했답니다.

  • 비동기 API: 더 쉽고 안정적인 구현이 가능해요.
  • 향상된 구독 관리: 구독 상태를 더 쉽게 추적할 수 있어요.
  • 트랜잭션 기록: 모든 거래 내역을 쉽게 확인할 수 있어요.

StoreKit 2는 아직 완전히 대체되지 않았지만, 앞으로 점점 더 많이 사용될 거예요. 마치 재능넷이 계속해서 새로운 기능을 추가하는 것처럼 말이죠! 😉

6.2. 앞으로의 전망

앞으로 StoreKit은 어떻게 발전할까요? 몇 가지 예측을 해볼 수 있어요:

  • 더 강력한 보안: 사기 거래를 막기 위한 새로운 기술들이 도입될 거예요.
  • AI 기반 가격 책정: 사용자별로 최적화된 가격을 제안할 수 있을 거예요.
  • 크로스 플랫폼 지원: iOS뿐만 아니라 다른 Apple 플랫폼과의 통합이 더욱 강화될 거예요.
  • 더 다양한 결제 옵션: 암호화폐 등 새로운 결제 방식이 추가될 수도 있어요.

🚀 미래를 준비하세요: StoreKit의 변화에 대비하려면 항상 최신 개발 동향을 주시하고, WWDC 같은 Apple 이벤트를 챙겨보는 것이 좋아요!

자, 이제 정말 끝이에요! StoreKit에 대해 정말 많은 것을 배웠죠? 이제 여러분은 앱에서 멋진 결제 시스템을 구현할 수 있을 거예요. 마치 재능넷에서 여러분의 재능을 뽐내듯이, 여러분의 앱에서도 StoreKit 실력을 뽐내보세요! 🌟👨‍💻👩‍💻

앞으로도 계속 공부하고 발전하는 개발자가 되길 바라요. 여러분의 앱이 App Store에서 대박 나길 기대할게요! 화이팅! 💪😄

관련 키워드

  • StoreKit
  • 인앱 결제
  • iOS 개발
  • 앱 수익화
  • 구독 모델
  • 프로모션 오퍼
  • 영수증 검증
  • 오프라인 지원
  • 사용자 경험
  • 에러 처리

지식의 가치와 지적 재산권 보호

자유 결제 서비스

'지식인의 숲'은 "이용자 자유 결제 서비스"를 통해 지식의 가치를 공유합니다. 콘텐츠를 경험하신 후, 아래 안내에 따라 자유롭게 결제해 주세요.

자유 결제 : 국민은행 420401-04-167940 (주)재능넷
결제금액: 귀하가 받은 가치만큼 자유롭게 결정해 주세요
결제기간: 기한 없이 언제든 편한 시기에 결제 가능합니다

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2024 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

 [프로젝트 가능 여부를 확인이 가장 우선입니다. 주문 전에 문의 해주세요] ※ 언어에 상관하지 마시고 일단 문의하여주세요!※ 절대 비...

 주문전 꼭 쪽지로 문의메세지 주시면 감사하겠습니다.* Skills (order by experience desc)Platform : Android, Web, Hybrid(Cordova), Wind...

웹 & 안드로이드 5년차입니다. 프로젝트 소스 + 프로젝트 소스 주석 +  퍼포먼스 설명 및 로직 설명 +  보이스톡 강의 + 실시간 피...

📚 생성된 총 지식 8,925 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2024 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창