APNS 따라하기 시리즈 (iOS 구성하기)

앱단 개발 개요

앱에서 해줘야 할 일은 앱을 실행한 디바이스의 정보를 3rt Party 서버와 통신해 DeviceToken과 UUID 그리고 사용자 정보를 던져주면 됩니다.
해당기기로 접근할 수 있는 키(열쇠)라고 생각하시면 되며, 이외의 모든 일은 iOS와 APNS서버가 알아서 해줍니다.

 

아이폰/아이패드 개발 코드

코드 작성은 크게 4가지 메서드에서 처리하게 됩니다.

  1. 원격 알림서비스를 iOS에 등록해야 합니다. 등록 성공/실패시 2,3번을 각각 실행합니다.
  2. 앱을 실행시 사용자가 알림서비스를 승인하면 서버로 디바이스 토큰을 보내야 합니다.
  3. 앱을 실행시 알림서비스 등록에 실패하는 경우 로직을 구현합니다.
  4. 메시지를 수신했을 때 처리하는 로직을 구현합니다.

이렇게 구현하면 기본적인 구현 절차는 끝나게 됩니다.
앱에 따라서 처리하는 방식이 달라지는 부분은 주로 2번과 4번이 될 것입니다.
예를 들면 메시지 보낼때 참고할 다른 정보를 보내거나, 메시지를 수신하면 앱내의 특정 부분으로 이동해서 해당 내용을 보여주려고 하실텐데 그런 부분들이라고 생각하시면 됩니다.

그럼 작성해야 할 개발코드를 알아보도록 하겠습니다.
위에서도 언급했다시피 EasyAPNS를 이용해 구현하는 것이니 참고하시기 바랍니다.

우선 (BOOL)application:didFinishLaunchingWithOptions: 메서드에서 원격 푸시 서비스를 하겠다고 등록을 해야 합니다.
이것을 작성함으로써 처음 앱 실행시 푸시알림 메시지를 받겠냐고 물어보는 Alert창이 나타나게 되며, 이 절차를 통해 iOS에게 이 앱이 원격 푸시 서비스를 등록하겠다고 알리는 것입니다. 이렇게만 해주시면 APNS서버에서 메시지를 수신하는 처리는 iOS가 알아서 처리해 앱으로 통보해줍니다.

 

사용자가 푸시를 받겠다고 승인하면 (void)application:didRegisterForRemoteNotificationsWithDeviceToken: 메서드가 실행됩니다.
이때, 우리는 일전에 만들었던 서버단으로 UUID와 deviceToken을 보내 정보를 보관하고 있어야 합니다.
deviceToken은 어떤 앱인지와 어떤 디바이스인지의 조합으로 구성되어진 64개의 바이트 조합입니다.
여기서 UUID와 Token은 사용자의 동의를 얻은 후 외부로 보내져야만 하며 이를 어길시 리젝사유가 될 수 있음을 참고하시기 바랍니다.
deviceToken정보는 EasyAPNS로 구현되어진 서버단의 특정 URL로  정보를 담아 전송해주기만 하면 EasyAPNS가 Device정보를 데이터베이스에 저장해줄 것 입니다.

aps_binary_provider_2

Notification Format

여기서 DeviceToken만 저장해서 보내주면 되지~ 왜? 오만 잡다한 정보도 저장해야하는지 궁금하지 않으세요?
이는 해당 디바이스에서 어떤 설정을 갖고 있는지 알 수 있는 방법이 없어서 입니다. 현재 앱을 설치한 사용자가 배지설정을 켰는지 껐는지 사운드는 켰는지 껐는지를 보내는 쪽에서도 체크를 해야 합니다. 물론 애플에서 해당 디바이스의 정보를 가져올 수 있는 피드백이라는 기능을 제공하고 있긴 하지만 번거로운 작업인 것은 분명합니다. 만약 정보체크를 소홀히 하신다면 해당 사용자가 알림센터 기능을 끄더라도 메시지는 날아갑니다. 이점 반드시 참고하여주시고, 또하나 메서드를 살펴보면 NSData로 DeviceToken값을 넘겨주는데 이는 퍼포먼스때문에 컴퓨터가 좋아하는 바이너리 포맷으로 전달됩니다. 위의 그림에 다 나와있는 내용이니 참고하세요!
자 그럼, 아래와 같이 작성해서 처리를 완료해주시면 됩니다.

 

아래는 등록하다가 실패하는 경우 사용되는 딜리게이트입니다.
간혹 APNS등록해서 잘 사용하다가 Provisioning, Certification, AppID의 내용을 하나라도 수정하시는 경우 에러가 나타날 수 있습니다.
혹 안되실때 이런부분을 찾아보시기 바랍니다.

 

이제 여러분들이 가장 많이 손봐야할 딜리게이트 코드 입니다. 이곳으로 NSDictionary 형태로 메시지정보가 던져지게 됩니다.
그걸 받아서 원하는데로 처리하시면 되겠습니다.
아래는 기본적인 형태로 앱이 실행되지 않을때 경고창을 띄워 알려주는 역할하도록 따로 작성하고 그게 아닌 경우 로그만 찍히게 해봤습니다.
추후 저는 URL을 받아서 해당 URL로 강제이동되게 할 예정입니다.

 

자! 지금까지 iOS의 Application Delegate상에 코드 작성하는 것을 보셨는데요~!

여기서는 EasyAPNS를 사용해 프로바이더(서버)를 구성할 계획이므로 이와 같이 참고하시면 되겠습니다.
서버로 던져주는 인자값들은 EasyAPNS에서 정해진 그대로를 사용한 것입니다.
참고적으로 꼭 정해진 인자값만 보내실 필요는 절대 없다는 점 알아두시기 바라며, 가장 중요한 것은 deviceToken값만 있으면 전송에는 문제가 없습니다.

하지만 하이브리드로 작업하시는 경우 Device의 Unique한 값을 찾느라 고민하실 수 있습니다.
이는 키체인을 이용해서 DEVICE UID를 저장해서 쓰시기 바랍니다.
앱을 삭제했다 다시 설치해도 해당 UID값을 계속해서 쓸 수 있습니다.

참고로 안드로이드는 시리얼을 이용하시면 되겠습니다.

다음은 EasyAPNS을 이용해 프로바이더를 구성하는 법을 소개해드리겠습니다.

 

 Generate Hills of glory Ammo

 

APNS관련 포스팅 보기

하나의 주소로 아이폰/안드로이드 앱 다운로드 하기

앱을 만들어서 배포했는데, 간혹 마케팅을 위해 다운로드 URL이 필요할 때가 있습니다.
특히 안드로이드와 아이폰앱 둘 다 배포해서 서비스 하는 경우는 더욱 더 하나의 URL이 효과적이죠!
그래서, 만들어봤습니다. 원리는 간단합니다.

저희 서버에 download.php라는 파일을 작성해서 링크를 걸고 해당 파일을 호출하면,
기기에 따라 알아서 플레이스토어든 앱스토어로 자동 이동됩니다.

mskv9n1eb9647ii

저의 경우 ShortURL을 활용해서 해당 주소를 http://is.gd/godoapp 과 같은 주소로 줄여서 사용하고 있습니다.
덕분에 해당 주소를 클릭하는 횟수 정보도 해당 ShortURL 서비스 사이트를 통해서 확인할 수 있습니다.

자신의 스마트폰 브라우저에서 http://is.gd/godoapp 이 링크를 쳐서 확인해보세요!
바로 앱스토어로 이동합니다.

 

<모바일 검색용 라이브러리>

 

<실 다운로드 링크 파일>pantai indrayanti

 

 

Because one SD/DR sample could not be processed, there were only three samples in that group. Of 1323 genes analyzed, the number of genes identified as present in LC and DR were 326 and 341, respectively. (c) Representative images of P60 WT neurons transduced with AAV2 2 encoding eGFP under the CBA promoter. Arrows indicate eGFP neurons expressing Ctip2 and not SATB2. For date. She a former director of AOL Parenting, a member of SCBWI, and a graduate from the University of California,Berkeley.. As we’re talking about the possibility of this going cheap oakleys sunglasses to trial with Peterson, could take months, maybe a year. It could boil down to the personal experiences of those on the jury? It’s a fuzzy legal standard as to what crosses the line between acceptable corporal punishment. June 5, 2014 In Game 1 of the Finals in San Antonio between the Spurs and the Miami Heat, an electrical failure in the arena causes the air conditioning to fail, and the indoor temperature reaches above 90 degrees. The Spurs go on to wholesale football jerseys beat the Heat, four games to one.. Points of calcium can be achieved hockey jerseys in many different ways, including catching cheap nfl jerseys a pass over the goal line, carrying the ball over the goal line, NBA Jerseys Cheap the control of a football player in its area of an end in itself, or a kicker the football through the goal posts on the opposite side. The football team with the highest score when the game is over, is the team that wins the game. Written by philosophy professor John Norman the Chronicles of Gor are about a planet where humans live in submission to a group of alien priests who kidnapped them from Earth. Despite boasting the sort of view on the universe that would get you banned from most creative writing classes, thousands of people have taken Norman’s work seriously enough to create their own Gorean society.. CVS is one of the strongest of those companies with assets totaling $19 billion as of June 2011 compared to Walgreens Company (WAG) with total assets of $13 billion as of May 2011 and RiteAid Corp (NYSE:RAD) with $4.4 billion in asset as cheap oakleys sunglasses of May ray ban sunglasses 2011. It also boasts of the largest revenues among the US pharmacies with $26 billion compared to $6.39 billion from Rite Aid and $18 billion from Walgreens for the same period.. Studies have shown that ex NFL players are less prone to depression than people in the population at large. They’re also less likely to commit suicide 59 percent less likely, to be precise. For office dwellers whose workspace isn’t patrolled by a vicious tackling machine, there are likely still a number of less menacing dangers lurking in your office space. Department of Labor’s Occupational Safety and Health Administration (OSHA).

iOS8 UITableView의 EdgeInset이 안먹는 경우

iOS7에서는 separatorInset을 UIEdgeInsetsZero로 주면 테이블뷰의 separator 라인의 마진이 없어졌었다.

하지만 iOS8에서는 separatorInset이 아닌 layoutMargin으로 바뀌었다.

테이블뷰에서 직접설정하면 되지만 커스텀 셀을 사용하는 경우 cell에 layoutMargin처리를 해야 제대로 동작한다.

 

하지만, 커스텀 셀이 많은 경우 테이블뷰의 willDisplayCell 딜리게이트를 이용해 다음과 같이 처리하면 보다 적은양의 코드로 처리가 가능하다.

 

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {

        [tableView setSeparatorInset:UIEdgeInsetsZero];

    }

    

    if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {

        [tableView setLayoutMargins:UIEdgeInsetsZero];

    }

    

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {

        [cell setLayoutMargins:UIEdgeInsetsZero];

    }

}

 

 

 

Facebook is one place where you can be whoever you wish to be. There are no restrictions (except the fact that you don’t harass, badmouth someone else or use profanity). The power that can really be projected here that Cheap Oakleys could change this thing would be it wouldn’t take a million fans. It wouldn’t take 10 million fans. I just can fathom what cheap oakleys made you decide to do an interlocking design. By nature, pearler beads don really support interlocking. 27 includes a video of Stevie Wonder, Luther Vandross, Whitney Houston and Dionne Warwick singing the song “That’s wholesale nfl jerseys what friends are for.”In the post, Salaam noted he was “feeling joyful” and told people to “keep smiling.”Followers since have posted condolences underneath it.News of his death shook the CU community Tuesday as many remembered Salaam’s slicing runs in 1994 on a team that might be one of the greatest not to win a national championship. It included standout quarterback Kordell Stewart and star receiver Michael Westbrook, who combined for a legendary Hail Mary pass that season to beat Michigan as time expired. This practice oakley outlet is acceptable under the FLSA, provided certain conditions are met. New Jersey employers are allowed to use the fluctuating workweek method.. A poker table is a table specially designed for playing cards usually poker. It is covered with a soft material or a smooth fabric that allows cards to glide smoothly. He was a very physical player, but he was someone who had to use every ounce of strength he had and had to use his body in ways that other players simply don’t. And I really think he could’ve had a long career in the NFL if he’d been able to stay healthy and wanted to play in the NFL. Even if the latest drama in the Solo saga spills onto the field, Australia won’t have much of an upper hand. The Americans have played the Aussies 24 times and never lost (beating them 22 times and tying twice). “Schools quite often move around or spend money to basically get rid of excess revenue what would be called profit in a profit making corporation,” said Michael Leeds, a professor of economics at Temple University. “‘[That’s cheap nfl jerseys why] you have several coaches [in the NCAA] getting paid NFL money, despite working for an enterprise that really ray bans sale does not match what the New England Patriots and the New York Giants take in.”. Mr. DANNY ROBERSON (Defensive Tackle, Nashville Storm): It’s just a love of the game. The invention of the telephone is one of those storybook legends everyone learns as a schoolkid. You know how it goes Alexander Graham Bell is tinkering with his newfangled magic discount football jerseys talking machine and says the legendary first words ever spoken into a phone: “Mr.