ios 웹앱 만들기

2022, Apr 11    
ios hybrid app firebase push

목표

firebase로 푸시받는 것 까지 하고 앱으로 배포

기본 웹앱 작성

웹앱 코드(https://www.youtube.com/watch?v=JafGypqFvs4)

인증서 작업

  • testflight으로 푸시테스트가 가능하려면, AdHoc Provisioning Profile which will use the production push certificate을 발급받아야 한다. (개발용이면 안됨)
  • 일단 fcm을 통한 발송준비용 인증서
    • fcm을 통해서 발송하는 것은 apns를 통해서 하는 인증서 절차보다 간단합니다. apns를 통해 발송할 경우, fcm에서 한 절차보다 몇 가지 더 하면 됩니다.(두개를 공통으로 사용가능)
    • mac의 키체인에서 인증서 만들고
    • Identifiers app등록
      • App ID Prefix는 아무거나 (teamid가 없는것도 됨)
      • push notification 선택
    • 다 등록하고 다시 상세내용에서 push notification의 edit 화면에서 배포용 인증서 생성
      • 로컬 키체인에서 csr파일 생성 (앱이 다르면, 각각 만들어주는 것이 좋다) - https://ios-development.tistory.com/247
      • 그러면 Certificates, Identifiers & Profiles > Certificate에서 푸시용 배포용 2개만들어지게 됨
      • 그러면 총 개인용, 푸시용(Apple Push Services로 등록한), 배포용 3개가 됨
      • 앱을 동일 계정으로 여러개 만들 경우는 identifiers app등록하고 csr인증서 연결해주고 key등록해주면 됨
    • Profile은 fcm일땐 생성안해도 됨
    • Keys 생성 (중요!)
      • 나중에 fcm 콘솔에 등록해야 하므로, 다운로드 파일(p8), Key Id 적어야함
  • firebase 설정
    • firebase 프로젝트 생성하고 → plist파일을 xcode에 넣고 → xcode 프로젝트에 firebase 라이브러리 추가하고(라이브러리는 firebase messaging 만 선택) → firebase 코드 추가한다.
    • 클라우드 메시지 → APN 인증 키 추가
      • apple developer의 Key 등록했을 때 받은, Keys의 Key Id, AuthKey~~.p8
      • team Id는 계정의 팀 아이디를 적는다(인증서랑 무관)
  • 이제는 xcode 작업
    • Sigining & Capabilities에 push notification 과 background modes 추가
      • background modes에는 background fetch와 remote notifications 선택
    • info.plist에 속성 추가
      • FirebaseAppDelegateProxyEnabled를 boolean으로 추가하고 NO로 설정

푸시 메시지 발송

  • 테스트
    • node의 apn모듈로 발송
      • 준비물 : 위에서 인증서 생성시 다운받은 p8파일과 p8파일의 KeyID, 팀ID, 번들ID

      iOS APNs 인증 키 p8 (iOS Key로 푸시 보내기)

    • firebase를 통해서 발송하는 방법도 있음
      • token을 에스프레소로 앱에서 호출하도록 해야함
      • 발송시간을 지금으로 해도 폰으로 오기까지 2~3분정도 걸리는 것 같다
  • token들을 서버 API를 통해 등록시키기

    Alamofire라이브러리를 pod로 설치해서 post api

    iOS : Alamofire 를 이용한 API 호출

기타

  • 앱아이콘 적용(https://appicon.co/)
  • 뱃지 : ios는 서버에서 숫자를 발송시켜줘야한다고 함. 앱에선 왔을때 0으로 초기화하는 코드만 두고

배포

  • 방식 결정 : 배포방식 중 testflight을 사용해보도록 함

알면 알수록 헷갈리는 IOS 환경 #2 - 앱 배포방식에 대해서 알아보자.

reference

https://dev200ok.blogspot.com/2020/04/ios-notification-push.html

https://www.raywenderlich.com/11395893-push-notifications-tutorial-getting-started

기타

[iOS] 푸시알림 클라우드 메세지 보내기[2] (APNS, 파이어베이스)

  • 내 계정이 회사 계정의 팀멤버로 연결되어서, 인증서를 생성할 수 없는 문제가 생겼는데.(팀관리자 계정이 갱신이 안되어서..) - 일단 푸시하려면 구독이 필요해보인다.
  • 내 맥은 카탈리나 10.15.7이고 xcode는 12.5로 ios15이상은 시뮬레이터나 폰에도 설치가 안되는 문제가 있다.
    • xcode13버전의 파일을 일부 옮겨와서 폰에 설치하려고 하니, 빌드는 성공했지만 아래오류 발생
      The code signature version is no longer supported. 
      Domain: com.apple.dt.MobileDeviceErrorDomain
    
    • 해결은 https://stackoverflow.com/a/68467307 이렇게 -generate-entitlement-der를 추가해줬다.
    • 저걸해주고 나서 fcm연동하니 발생했는데, TARGETS -> select[your project name] -> General -> Frameworks,Libraries,and EmbeddedContent 에 가서 Firebase Analystic인가 하는 라이브러리를 제거해줬더니 해결
  • p12파일을 생성하기까지

iOS) APNs :: 인증서 발급받는 방법 (p.12, pem)

[ios] 자바 스프링 서버에서 iOS앱에 푸시 알림 보내기(APNs 개발용, 배포용)

[iOS] Spring 서버에서 사용할 APNS 인증서 준비