[Delphi] 팝빌 카카오톡 SDK 튜토리얼Delphi 개발환경에서 팝빌 Delphi SDK를 적용하여 알림톡 전송(SendATS) 함수를 구현하는 예시입니다. Show 1. Popbill SDK 추가① 팝빌 연동자료실에서 Delphi SDK 예제코드 다운로드 후 압축을 해제합니다.
② 압축해제한 SDK 예제코드에서 Linkhub/ Popbill/ PopbillKakao/ 각 폴더의 pas파일 3개를 프로젝트 유닛으로 추가합니다. ③ 아래 코드를 참조하여 Form 파일을 수정합니다. 연동신청시 발급받은 인증정보로 링크아이디(LinkID)와 비밀키(SecretKey) 값을 변경하시기 바랍니다.
2. 알림톡 전송(SendATS) 함수 구현① Form에 버튼을 생성하고 버튼의 Click Event 코드에 알림톡 전송 함수(SendATS)를 추가합니다.
② 버튼 클릭으로 함수호출 결과를 확인합니다. 카카오 플랫폼 API에서 제공하는
푸시알림을 호출하는 젬입니다. iOS, 안드로이드 사용자에게 푸시를 보낼때 유용한 카카오 푸시알림은 REST API로만 제공되고 있기에 이를 젬으로 만들어 봤습니다. 당근마켓(아이폰,
안드로이드)에서 사용하던 코드를 젬으로 만들었습니다. 주의: 이 젬은 카카오에서 공식적으로 제공하는 젬이 아닙니다. 이점 유의 하시기 바랍니다. Gemfile 파일에 다음과 같이 추가하고: 아래 명령어를 실행합니다: 혹은 젬을 직접 설치할 수 있습니다: 사용법클라이언트 객체 생성키를 직접 넘기거나, 기본값으로 env값을 참조할 수 있습니다: client = KakaoPush::Client.new(rest_api_key: 'kakao_admin_key') # 아니면 # KAKAO_PUSH_CLIENT_ID=kakao_admin_key client = KakaoPush::Client.new 토큰 등록파라미터 및 응답에 관한 자세한 정보는 카카오 REST API 개발가이드 - 푸시알림 참고 res = client.register(uuid: 1, push_type: 'apns', device_id: 'device_id', push_token: 'push_token') res.success? # 등록에 성공한 경우 true res.fail? # 등록에 실패한 경우 true res.data # 등록에 성공한 경우 숫자 30 반환. 30일 후에 해당 토큰이 만료됨을 의미 => 30 토큰 조회파라미터 및 응답에 관한 자세한 정보는 카카오 REST API 개발가이드 - 푸시알림 참고 res = client.tokens(uuid: 1) res.success? # 조희에 성공한 경우 true res.fail? # 조회에 실패한 경우 true res.data # 조회에 성공한 경우 데이터 반환. 배열로 반환되지만 배열 객체는 1개 뿐이므로 유의 => [{"user_id":"1","device_id":"a","push_type":"apns","push_token":"aaa","created_at":"2015-12-11T11:34:17Z","updated_at":"2015-12-11T11:34:17Z"}] 토큰 삭제파라미터 및 응답에 관한 자세한 정보는 카카오 REST API 개발가이드 - 푸시알림 참고 res = client.deregister(uuid: 1, push_type: 'apns', device_id: 'device_id') res.success? # 삭제에 성공한 경우 true res.fail? # 삭제에 실패한 경우 true 푸시 전송파라미터 및 응답에 관한 자세한 정보는 카카오 REST API 개발가이드 - 푸시알림 참고 apns = KakaoPush::Apns.new(badge: nil, sound: 'default', push_alert: true, message: nil, custom_field: nil, push_token: nil, apns_env: 'sandbox') gcm = KakaoPush::Gcm.new(collapse: nil, delay_while_idle: nil, time_to_live: nil, dry_run: nil, priority: nil, return_url: nil, custom_field: 'data', push_token: nil) res = client.send(uuids: [1], apns: apns, gcm: gcm, bypass: false) res.success? # 전송에 성공한 경우 true res.fail? # 전송에 실패한 경우 true success? 결과가 true이더라도 실제 사용자에 디바이스에 전송되었음을 보장하지 않음. 메시지 포맷이 다르거나 맞지 않아도 success? 값이 true로 반환되기도 하므로 실제 전송 유무는 디바이스에서 테스트가 필요합니다. apns_env 값은 production 인 경우 nil로 전송 서버에 저장할 값디바이스로부터 받은 토큰, 푸쉬 타입(apns, gcm)은 서버에 저장하는것이 좋다. 토큰 삭제를 안할거라면 푸쉬 타입은 굳이 저장할 필요 없습니다. 푸쉬 토큰은 30일이 지나면 토큰 조회 API를 통해서도 조회 할 수 없으므로 될수 있으면 저장하는 편이 좋다고 생각합니다. 예를 들어보자면 디바이스로부터 받은 토큰과 카카오 푸쉬 만료 예정일을 서버에 저장하고 푸쉬 만료 예정일이 되기 전에 다시 토큰 등록 API를 호출하는 사례도 있습니다. 에러 상황정상적인 파라미터를 제공 했음에도 아래와 같은 오류가 발생 한다면 Kakao Developers 사이트에서 앱 설정의 '푸시 알림'을 활성화 하고 gcm, apns 설정을 잘 했는지 확인해야 합니다. 설정하지 않은 경우 아래와 같이 파라미터가 잘못됬다고 에러 메시지가 반환됩니다.
도움 주신 분들
Contributing버그 레포팅과 풀리퀘스트는 GitHub에 남겨주세요. https://github.com/n42corp/kakao_push |