iOS
Send Push Notifications
Objective-C 클라우드 코드로 iOS 푸시 알림 구현
24 분
objective c로 클라우드 코드를 사용하여 푸시 알림 보내기 소개 이 섹션에서는 back4app을 통해 클라우드 코드를 사용하여 푸시 알림을 보내는 방법을 설명합니다 이것이 어떻게 보일지입니다 언제든지 이 튜토리얼로 구축된 전체 프로젝트에 접근할 수 있습니다 github 리포지토리 이 빠른 시작을 완료하려면 다음이 필요합니다 xcode back4app에서 생성된 앱 다음 새 parse 앱 튜토리얼 을 따라 back4app에서 parse 앱을 만드는 방법을 배우세요 back4app에 연결된 ios 앱 참고 다음 parse sdk (swift) 설치 튜토리얼 을 따라 back4app에 연결된 xcode 프로젝트를 만드세요 back4app 푸시 알림을 통해 설정된 ios 앱 대시보드 튜토리얼 ios 10 이상을 실행하는 iphone 또는 ipad 유료 apple 개발자 계정 1 푸시 알림을 수신하도록 ios 앱 설정하기 푸시 알림을 위해 등록된 장치에 설치된 모든 parse 애플리케이션에는 관련된 설치 설치 객체가 있습니다 설치 설치 객체는 푸시 알림을 타겟팅하는 데 필요한 모든 데이터를 저장하는 곳입니다 예를 들어, 귀하의 앱에서 사용자가 관심 있는 팀을 저장하여 그들의 성과에 대한 업데이트를 보낼 수 있습니다 설치 설치 객체를 저장하는 것은 푸시 관련 앱 열기 이벤트를 추적하는 데도 필요합니다 알림을 보내기 시작하는 가장 간단한 방법은 채널을 사용하는 것입니다 이를 통해 푸시를 보내기 위한 게시자 구독자 모델을 사용할 수 있습니다 장치는 하나 이상의 채널에 구독함으로써 시작하며, 이후 이러한 구독자에게 알림을 보낼 수 있습니다 특정 설치 설치 에 의해 구독된 채널은 채널 채널 필드에 저장됩니다 설치 설치 객체 그 후, 우리는 쿼리를 기반으로 단일 사용자 또는 사용자 그룹에 대한 타겟 푸시 알림 전송에 대해 설명할 것입니다 앞으로 우리는 여러분이 모든 단계를 완료했다고 가정할 것입니다 back4app 푸시 알림 대시보드 튜토리얼 , 이 튜토리얼로 구축된 ios 프로젝트를 사용하더라도 말입니다 github 리포지토리 기본적인 푸시 알림이 작동하고 관리 콘솔을 통해 푸시를 전송할 수 있어야 합니다 2 뉴스 채널에 장치를 구독하기 먼저 설치 객체에 채널을 추가할 것입니다 이를 위해 app delegate 파일의 createinstallationonparse 메서드를 수정할 것입니다 프로젝트의 appdelegate m 파일을 열고 didregisterforremotenotificationswithdevicetoken의 버전이 아래 코드와 동일한지 확인하십시오 우리는 새로운 코드 한 줄 ‘\[currentinstallation setobject @\[@”news1”] forkey @”channels”];’ 을 추가하고 있습니다 이는 설치 객체의 채널 배열을 ‘뉴스’라는 하나의 채널을 포함하도록 설정합니다 이를 통해 클라우드 코드를 통해 ‘뉴스’라는 채널에 구독한 모든 사용자에게 메시지를 보낼 수 있습니다 appdelegate m 2\ 실제 장치에서 앱을 실행하여 테스트합니다 시뮬레이터에서는 실행할 수 없습니다 설치 기록을 업데이트하려면 실제 푸시 토큰이 필요하므로 실제 장치가 필수입니다 성공적으로 실행되면 대시보드의 설치 섹션에서 이를 확인할 수 있습니다 back4app 웹사이트 로 가서 앱의 대시보드를 클릭한 다음 설치 테이블을 확인할 수 있습니다 채널 열 아래에서 '뉴스'를 확인할 수 있으며, 이는 이제 뉴스 푸시 채널에 구독되었음을 보여줍니다 3 클라우드 코드를 생성하세요 cloud code 를 확인하세요 ios용 클라우드 코드 튜토리얼 파일을 생성하여 cloud code를 넣으세요 js js 라고 이름을 지정해야 back4app이 이곳에 클라우드 코드를 저장한다는 것을 알 수 있습니다 푸시 알림을 호출하기 위해 parse cloud define parse cloud define , 클라우드 함수를 정의합니다 함수 내부에서 parse push send parse push send 를 호출하여 ‘뉴스’ 채널에 푸시를 보냅니다 이 작업에는 마스터 키 를 사용하는 것이 필요합니다 다음 코드는 이러한 단계를 실행합니다 parse server 3 x // main js 1 parse cloud define("pushsample", (request) => { 2 3 return parse push send({ 4 channels \["news"], 5 data { 6 title "hello from the cloud code", 7 alert "back4app rocks!", 8 } 9 }, { usemasterkey true }); 10 }); parse server 2 x //main js 1 parse cloud define("pushsample", function (request, response) { 2 parse push send({ 3 channels \["news"], 4 data { 5 title "hello from the cloud code", 6 alert "back4app rocks!", 7 } 8 }, { 9 success function () { 10 // push was successful 11 response success("push sent"); 12 console log("success push sent"); 13 }, 14 error function (error) { 15 // push was unsucessful 16 response error("error with push " + error); 17 console log("error " + error); 18 }, 19 usemasterkey true 20 }); 21 }) 4 클라우드 코드에 업로드 앱으로 가세요 back4app 웹사이트 그리고 대시보드 대시보드 를 클릭하세요 클라우드 코드 클라우드 코드 를 찾아서 함수 및 웹 호스팅 함수 및 웹 호스팅 을 클릭하세요 이렇게 보입니다 3\ 파일을 업로드하거나 새 파일을 생성하세요 (현재 main js main js 파일을 브라우저에서 직접 편집할 수도 있습니다) 그런 다음, 배포 배포 를 클릭하세요 여기와 같이 5 ios 앱에서 클라우드 코드 호출하기 다음으로, 앱에서 이 클라우드 함수를 호출하는 코드를 작성할 것입니다 이 작업을 완료하려면 시뮬레이터와 실제 장치가 모두 필요합니다 시뮬레이터에서 실행 중인 앱에서 클라우드 함수를 호출하면 실제 장치에서 푸시 알림이 나타나는 것을 볼 수 있습니다 실제 장치는 푸시 알림을 보기 위해 잠금 화면이 켜진 상태로 닫혀 있어야 합니다 푸시 알림을 받을 때 푸시를 보내는 앱 안에 있으면 화면에 푸시가 나타나지 않습니다 프로젝트의 viewcontroller m 파일을 엽니다 파일 상단에 ‘#import \<parse/parse h>’ 코드를 추가하여 뷰 컨트롤러에 parse를 포함해야 합니다 viewcontroller 3\ 다음으로 viewcontroller m 파일에서 viewdidappear 메서드에서 알림 함수를 호출할 것입니다 이 알림은 클라우드 코드를 트리거하여 장치로 푸시를 전송할 수 있게 해줍니다 viewdidload 함수 다음에 다음 코드 블록을 포함해야 합니다 viewcontroller m 4\ 시뮬레이터에서 앱을 실행하고 푸시 전송 요청 알림이 나타나면 “확인”을 누르세요 실제 기기에서는 잠금 화면에 푸시가 나타나는 것을 볼 수 있어야 합니다 6 rest api에서 클라우드 코드 호출하기 rest api는 클라우드 기능이 작동하는지 테스트하는 빠르고 쉬운 방법을 제공합니다 터미널이나 명령 프롬프트에서 아래 코드를 사용하세요 명령줄을 시작하는 방법에 대해 더 알고 싶으시면 클릭하세요 linux , macos 또는 windows 푸시 알림을 테스트하려면, 장치가 꺼져 있을 때 rest 코드를 사용하세요 7 사용자 객체를 사용하여 타겟 푸시 알림 보내기 앞으로 우리는 기본 가입 및 로그인 기능이 이미 구축된 다른 ios 프로젝트를 사용할 것입니다 우리는 사용자가 로그인했는지 감지하는 방법을 보여줄 수 있는 이 ios 프로젝트를 사용할 것이며, 그렇다면 클라우드 코드에서 쿼리할 수 있도록 객체 id에 대한 링크와 함께 설치를 저장할 것입니다 이 섹션의 튜토리얼로 구축된 전체 ios 프로젝트는 github 리포지토리 에서 다운로드할 수 있지만, 여전히 back4app 대시보드에서 푸시를 보내는 방법을 설명하는 이전 튜토리얼의 모든 설정을 해야 합니다 앱의 새 버전을 설정하고 앱에 가입하거나 로그인하세요 먼저 github에서 작동하는 템플릿을 다운로드했는지 확인하세요 github 리포지토리 우리는 이 앱을 구축하는 모든 단계를 설명하지 않을 것이며, 대신 클라우드 코드를 설정하는 것과 그 작동 원인에 집중할 것입니다 이 새 앱을 열면 appdelegate m 파일에 자신의 앱 자격 증명을 입력해야 합니다 appdelegate m 2\ 이 앱은 이전 앱과 몇 가지 주요 차이점이 있습니다 로그인된 상태의 앱을 위한 섹션과 로그인되지 않은 상태의 앱을 위한 섹션이 있습니다 다음 큰 변화는 appdelegate m 파일의 ‘didregisterforremotenotificationswithdevicetoken’ 함수입니다 우리는 사용자의 객체 id를 설치 객체의 일부로 저장하는 1줄을 추가했습니다 그렇게 하면 어떤 사용자가 어떤 설치 객체와 연결되어 있는지 알 수 있으며, 개별적으로 푸시를 타겟팅할 수 있습니다 appdelegate m 3\ 이제 사용자의 객체 id를 설치 객체의 일부로 저장하고 있으므로 사용자가 로그인할 때까지 새로운 푸시 토큰을 요청하고 싶지 않습니다 우리는 appdelegate m 파일의 함수 ‘application didfinishlaunchingwithoptions’에서 직접 토큰을 요청하고 싶지 않으며, 대신 loggedinviewcontroller의 함수 ‘viewdidappear’에서 호출하고 싶습니다 ‘viewdidappear’에서 우리는 appdelegate의 함수에 호출하여 apple로부터 푸시 알림 토큰에 대한 접근을 요청합니다 이 섹션은 사용자가 로그인한 후에만 볼 수 있으므로 설치 객체를 생성하고 객체 id를 검색할 때 사용자가 로그인했다고 가정할 수 있습니다 loggedinviewcontroller appdelegate m 4\ 좋아요, 이제 가입하거나 로그인하세요 실제 기기(iphone 또는 ipad)에서 앱을 시작하세요 아래 이미지를 볼 수 있어야 합니다 새 사용자를 만들기 위해 가입하거나 이미 앱에서 사용자를 만든 경우 로그인해야 합니다 이렇게 보일 것입니다 이제 loggedinviewcontroller를 볼 수 있어야 합니다 이렇게 보일 것입니다 자신에게 푸시를 보내려고 하면 작동하지 않습니다 왜냐하면 우리는 아직 클라우드 코드에 이러한 메서드를 추가하지 않았기 때문입니다 그래서 다음에 할 일은 그것입니다 8 클라우드 코드에 대상 푸시 메서드 추가하기 이전에 생성한 main js 파일을 열고 사용자 id로 설치를 타겟팅하는 다음 함수를 추가하세요 이 작업에는 마스터 키 를 사용하는 것이 필요합니다 다음 코드는 이러한 단계를 실행합니다 parse server 3 x // main js 1 parse cloud define('sendpushtoyourself', (request) => { 2 let userid = request user id; 3 4 let query = new parse query(parse installation); 5 query equalto("userid", userid); 6 query descending("updatedat"); 7 return parse push send({ 8 where query, 9 data { 10 title "hello from the cloud code", 11 alert "back4app rocks! single message!", 12 } 13 }, { usemasterkey true }); 14 }); 15 16 parse cloud define('sendpushtoallusers', (request) => { 17 let currentuser = request user; 18 let userids = \[currentuser id]; 19 20 let query = new parse query(parse installation); 21 query containedin('userid', userids); 22 return parse push send({ 23 where query, 24 data { 25 title "hello from the cloud code", 26 alert "back4app rocks! group message!", 27 } 28 }, { usemasterkey true }); 29 }); parse server 2 x //main js 1 parse cloud define('sendpushtoyourself', function (request, response) { 2 var currentuser = request user; 3 var userid = currentuser id; 4 5 var query = new parse query("installation"); 6 query equalto("userid", userid); 7 query descending("updatedat"); 8 parse push send({ 9 where query, 10 data { 11 title "hello from the cloud code", 12 alert "back4app rocks! single message!", 13 } 14 }, { 15 usemasterkey true, 16 success function () { 17 response success("success sending a single push!"); 18 }, 19 error function (error) { 20 response error(error code + " " + error description); 21 } 22 }); 23 }); 24 25 parse cloud define('sendpushtoallusers', function (request, response) { 26 var currentuser = request user; 27 var userids = \[currentuser id]; 28 29 var query = new parse query(parse installation); 30 query containedin('userid', userids); 31 parse push send({ 32 where query, 33 data { 34 title "hello from the cloud code", 35 alert "back4app rocks! group message!", 36 } 37 }, { 38 usemasterkey true, 39 success function () { 40 response success('success sending a group push!'); 41 }, 42 error function (message) { 43 response error(error code + " " + error description); 44 } 45 }); 46 }); 9 클라우드 코드에 업로드 앱으로 가세요 back4app 웹사이트 를 클릭하세요 대시보드 대시보드 찾아보세요 클라우드 코드 클라우드 코드 를 클릭하세요 기능 및 웹 호스팅 기능 및 웹 호스팅 이렇게 생겼습니다 3\ 새 파일을 업로드하거나 생성하세요 (현재 main js main js 파일을 브라우저에서 직접 편집할 수도 있습니다) 그런 다음, 배포 배포 를 클릭하세요 10 자신에게 타겟 푸시 알림을 보낼 수 있는지 테스트하기 물리적 장치를 잠금 화면으로 닫은 상태에서 시뮬레이터에서 앱을 엽니다 ‘자신에게 푸시 보내기’ 버튼과 ‘사람들 그룹에게 푸시 보내기’ 버튼을 눌러 두 푸시 기능이 작동하는지 테스트할 수 있습니다 장치의 잠금 화면에 푸시가 나타나는 것을 볼 수 있어야 합니다 마지막 생각들 이로써 튜토리얼이 끝났습니다 사용자의 채널이나 사용자 객체 id 또는 사용자의 객체 id를 가져오는 쿼리에 따라 푸시를 보내는 방법에 대한 확고한 이해를 가져야 합니다 사용자의 객체 id를 저장하려면 푸시 설치에 추가해야 하며, 사용자가 로그인할 때만 푸시 토큰을 요청해야 합니다 쿼리를 통해 푸시를 보낼 때 기본적으로 100개의 결과로 제한되며 일부 사용자는 하나 이상의 설치 객체를 가질 수 있습니다 또한 100개 이상의 설치 객체 배열에 푸시를 보내는 것은 권장되지 않습니다 일부 푸시가 전송되지 않을 수 있습니다 대규모 그룹을 다룰 때는 채널을 사용하거나 반복 요청으로 푸시를 보내는 것이 좋습니다 완료되었습니다! 이 단계에서 back4app을 통해 클라우드 코드를 사용하여 푸시 알림을 보낼 수 있습니다! 축하합니다!