[핑거푸시 개발자 사이트 신규 오픈 안내] 현재 사이트는 2022년 10월 31일 17시 이후 이용이 중지되므로,
새로운 개발자 사이트로 접속해 주시기 바랍니다. 바로가기

iOS SDK Manual

프로젝트 설정
1. 핑거푸시개발자(HelloWorld)사이트에서 다운받은 프레임워크(finger.xcframework)을 프로젝트에 추가합니다.

2. Xcode 에서 TARGETS 선택 후 General 탭에서 “Frameworks, Libraries, and Embedded Content” 항목에 프레임워크(finger.xcframework)가 추가 되었는 지 확인합니다. (“Embed&Sign” 로 설정)
Push Notification의 Entitlements가 설정
1. 프로젝트의 [Capabilities]탭을 선택하고 “Push Notifications”를 ON으로 값을 변경해주면 자동으로 AppName.entitlements파일이 생성됩니다.
ios-sdk-manu-img-03
기기버전관리
1. info.plist에 “AppVersionInt”값을 추가하면, 앱 버전별 통계나 앱 업데이트를 관리 할 수 있습니다.
앱 업데이트 할때마다 AppversionInt 값을 올려서 설정합니다. (보통 Bundle version이 int형이면 같은 값으로 사용)
스크린샷 2019-01-31 오후 5.58.21
핑거푸시서버 연동
– 핑거푸시 APP KEY 설정 (개발용 DeviceToken 과 배포용 DeviceToken 이 섞이지 않도록 주의해 주십시오.)
				/***
				AppDelegate에 핑거푸시서버와 연동을 하기 위해서 다음과 같이 설정합니다.
				***/
				
				#import <finger/finger.h>
				
				
				//핑거푸시 
				-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  {
				
				  finger  *_fingerManager = [finger sharedData];   //싱글톤 객체로 사용
				#ifdef DEBUG
				//개발용 앱
				  [_fingerManager setAppKey:@”발급받은 앱키"];    //App Key
				  [_fingerManager setAppScrete:@“발급받은 앱시크리트키"];    //AppScrete
				#else
				//배포용 앱
				  [_fingerManager setAppKey:@”발급받은 앱키"];    //App Key
				  [_fingerManager setAppScrete:@“발급받은 앱시크리트키"];    //AppScrete
				#endif
				..
				..
				
				}

 

– 핑거푸시에 기기등록 (DeviceToken 은 OS에 의해 변경될 수 있습니다. 따라서, 앱 실행시마다 호출해야 합니다.)
				//기기등록 
				-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
				    //핑거푸시의 모든 api를 사용하기 위해서 기기등록 우선
				    [[finger sharedData] registerUserWithBlock:deviceToken :^(NSString *posts, NSError *error) {
				        if (!error)
				        {
				            NSLog(@"기기등록  %@", posts);        
				        }else{
						//이미등록(504, 201) 무시.
				            NSLog(@"기기등록 error %@", error);        
				        }
				    }];
				}

 

– 푸시 메세지수신 시 메세지오픈/읽음 처리
				//메세지 오픈 및 읽음 처리
				- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler {
				    //참고 : 메세지 정보 확인
				    NSDictionary* dicCode = [finger receviveCode:userInfo];
				    NSString *strPT = [dicCode objectForKey:@"PT"]; //메세지타입 - DEFT(일반) , STOS (서버투서버), LNGT(롱푸시)
				    NSString *strIM = [dicCode objectForKey:@"IM"];	//이미지 여부 (0: 이미지 미포함 , 1: 이미지 포함)
				    NSString *strWL = [dicCode objectForKey:@"WL"];	//웹링크 여부 (0: 웹링크 미포함 , 1: 웹링크 포함)
				
				   //메세지 읽음 처리
				   [[finger sharedData]  requestPushCheckWithBlock:userInfo :^(NSString *posts, NSError *error) { 
				      if (!error) {
				          NSLog(@"check : %@", posts);
				      }else{
				          NSLog(@"check error %@", error);
				      }
				  )];
				}

 

– 푸시 수신 데이터(Payload)
				{
				   aps = {
				      alert = {
				            body = "안녕하세요. 핑거푸시입니다";
				            title = "메세지 제목입니다.";
				         };
				      badge = 0; // 뱃지 카운트
				      category = fp; // 메세지 카테고리
				      "mutable-content" = 1; // notification service extension 사용 여부(이미지와 웹 링크 추가시)
				      sound = default; // 사운드
				   };
				   커스텀 데이터 키1 = 커스텀 데이터 값1;
				   커스텀 데이터 키2 = 커스텀 데이터 값2;
				   커스텀 데이터 키3 = 커스텀 데이터 값3;
				   code = "CD:1;IM:1;WL:1;PT:STOS";
				   // ( CD : 커스텀 데이터 여부(0 : 없음, 1 : 있음), IM : 이미지 첨부 여부(0 : 없음, 1 : 있음), WL : 웹 링크 여부(0 : 없음, 1 : 있음), PT : 메세지 타입(DEFT:일반푸시, STOS:Server to Server, LNGT:롱푸시))
				   imgUrl = "http://..."; // 이미지 URL
				   labelCode = ""; // 라벨 코드
				   msgTag = ...; // 메세지 고유 번호
				   weblink = "http://www.google.com"; // 웹 링크
				}

 

※ 푸시 수신 데이터(Payload) Apple 개발자 사이트 참조 링크 [페이지 이동]
API 연동 결과 코드
코드 내용 비고
200 정상처리  
403 App_key, secret 오류, 권한없음  
404 조회 대상 없음, 조회 결과 없음  
500 처리 중 에러  
503 필수 값 없음  
504 이미 등록된 토큰 디바이스 등록에서만 사용
※ 호출 결과가 error일 경우 error.debugDescription 또는 error.userinfo으로 세부 code값 참조
– error.Code 901 : 핑거푸시 API 통신 결과 에러
– error.Code 900 : 핑거푸시 SDK 로컬 에러