[오픈 API] 앱 다운로드 순위를 가져오자 2부 (모바일앱 설계)
- [오픈 API] 앱 다운로드 순위를 가져오자 1부 (AppApnnie Api)
- [오픈 API] 앱 다운로드 순위를 가져오자 2부 (모바일 앱 설계)
- [오픈 API] 앱 다운로드 순위를 가져오자 3부 (모바일 앱 구현)
두번째 시간으로 앱 다운로드 순위을 가져오는 ios 앱을 만들어 보겠습니다.
우선 이번시간에는 설계를 하고, 다음시간에는 구현을 하도록 하겠습니다.
목차
- 프로젝트 생성 및 Prefix 파일 정의
- 화면 구성
- 모델 설계
- 사용할 라이브러리
==============================================================================
1. xcode를 열고, 프로젝스명을 "AppDownload" 적고 프로젝트를 생성합니다.
프로젝트 생성 |
그리고 PrefixHeader.pch 파일을 만들고 연결할 뒤, 이전시간에 사용했던 Appannie API 및 사용할 API를 정리합니다. PrefixHeader은 프로젝트 생성 시 자동으로 만들어지지 않으나, 파일을 만들고 나서 타겟 - 빌드 세팅에서 연결해주면됩니다.
PrefixHeader 추가 |
Prefix 파일은 절대경로를 정의해주고, 모든 클래스에서 접근할수 있으므로 매우 유용해서, 저는 프로젝트 진행 시 사용합니다. 사용할 API 주소 및 절대 주소값들에 대한 내용들을 정의합니다.
==============================================================================
// API를 요청한 디폴트 URL
#define DEFAULT_URL @"https://api.appannie.com/v1.2"
//APPANNIE API KEY
#define APPANNIE_API_KEY @"Bearer 0f4fec38940d13b11608b226322990c513967335"
//맨처음 요청할 Account API
#define AUTH_API(page_index) [NSString stringWithFormat:@"%@/accounts?page_index=%@",DEFAULT_URL,page_index]
//두번째로 요청할 Products API
#define PRODUCTS_API(accountId,page_index) [NSString stringWithFormat:@"%@/accounts/%@/products?page_index=%@",DEFAULT_URL,accountId,page_index]
//마지막으로 요청할 Sales API
#define SALES_API(accountId,productId,start_date,end_date,countries,page_index) [NSString stringWithFormat:@"%@/accounts/%@/products/%@/sales?start_date=%@&end_date=%@¤cy=USD&countries=%@&page_index=%@",DEFAULT_URL,accountId,productId,start_date,end_date,countries,page_index]
==============================================================================
Account를 요청하는 화면 : API KEY로 AccontID를 요청하고 선택하는 화면
Products 요청하는 화면 : AccontID로 ProductID를 요청하고, 선택하는 화면
Sales 요청하는 화면 : ProductID로 Sales 정보를 요청하는 화면
스토리보드 화면 구성 |
3. 모델 설계
API 통신을 하면서, 전달받을 값을 모델 데이터에 넣을 객체들을 설계합니다.
==============================================================================
3.1 Account API릍 요청후 받을 객체
@interface AuthModel : NSObject
@property (nonatomic,strong) NSString *account_id;
@property (nonatomic,strong) NSString *account_name;
@property (nonatomic,strong) NSString *account_status;
@property (nonatomic,strong) NSString *market;
@property (nonatomic,strong) NSDate *first_sales_date;
@property (nonatomic,strong) NSDate *last_sales_date;
@property (nonatomic,strong) NSString *publisher_name;
@property (nonatomic,strong) NSString *vertical;
3.2 Product API릍 요청후 받을 객체
@interface ProductsModel : NSObject
@property (nonatomic,strong) NSArray *device_codes;
@property (nonatomic,strong) NSString *devices;
@property (nonatomic,strong) NSString *status;
@property (nonatomic,strong) NSDate *first_sales_date;
@property (nonatomic,strong) NSDate *last_sales_date;
@property (nonatomic,strong) NSString *market;
@property (nonatomic,strong) NSString *icon;
@property (nonatomic,strong) NSString *product_name;
@property (nonatomic,strong) NSString *product_id;
3.3 Sales API릍 요청후 받을 객체
@interface SalesModel : NSObject
@property (nonatomic,strong) NSString *date;
@property (nonatomic,strong) NSString *country;
@property (nonatomic,strong) UnitsModel *units;
3.4 SalesModel의 units 객체
@interface UnitsModel : NSObject
@property (nonatomic,strong) ProductModel *product;
3.5 UnitsModel 의 product 객체
@interface ProductModel : NSObject
@property (nonatomic,strong) NSString *promotions;
@property (nonatomic,strong) NSString *downloads;
@property (nonatomic,strong) NSString *updates;
@property (nonatomic,strong) NSString *refunds;
==============================================================================
4. 이제 앱에서 사용할 라이브러리들을 정리 합니다.
HTTP 통신, 이미지 다운로드, JSON 파서 등을 사용할 예정이기 때문에, pod파일을 열고 아래의 오픈소스들을 추가합니다.
- AFNetworking : http 통신라이브러리
- MJExtension : json 객체를 모델 객체로 넣어주는 라이브러리
- MJRefresh : 새로고침 라이브러리
- SDWebImage : 이미지 다운로드 및 캐쉬 라이브러리
===========================================================================
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'AppDownload' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for AppDownload
pod 'AFNetworking'
pod 'MJExtension'
pod 'MJRefresh'
pod 'SDWebImage'
end
==============================================================================
자 이제, 설계는 모두 끝났고, 다음시간에는 구현을 해보도록 하겠습니다.
댓글
댓글 쓰기