iOS에서는 실시간통신을 위하여 Socket을 사용할 수 있다. 하지만 앱이 백그라운드로 이동한 경우 Socket 연결을 해제한다.(socket-io 공식문서) 이런 경우, Push에서 데이터를 추가하여 백그라운드에서 데이터를 전달받을 수 있다.
안드로이드와 달리 iOS에서는 APNs로 Payload형식을 맞추어 값을 지정하여 Push를 전송해야 APNs에서 기기로 전달을 하는데 형식을 맞추어서 전달해야 한다. AppDelegate에서 Background에서 Push처리와 Foreground에서 Push처리를 각각 상황별로 처리할 수 있다.
Custom Push를 구현하기 위해서 Push에 Attachment를 이용하여 이미지를 전달받는 방법과 값을 변경하는 방법등 김종권iOS블로그 - Push 섹션를 참고하여 테스트를 해보았다. 구현도중 Notification Service Extension을 진행하면서 발생한 이슈가 한가지 있었는데 Command ValidateEmbeddedBinary failed with a nonzero exit code 해당 에러는 Notification Service Extension 타겟의 Bundle Version들이 Host 타겟과 다르기 때문에 발생한 이슈여서 버전을 맞춰주면 해결했다.
Reject 사유는 Guideline 2.1 - Performance - App Completeness 심사자의 아이패드 에어에서 흰 화면에서 진행이 안되는 이슈였다. fastlane을 이용하여 Testflight배포를 하는데 Archive를 진행하는 도중 일부 오류가 발생한 것 같다. fastlane을 업데이트 한 후 다시 배포를 한 후 심사자와 동일한 환경으로 실행해본 후 확인한 후 해결되었다. 과거에 관련한 이슈가 있었는데 fastlane을 이용해 서로 다른 컴퓨터에서 배포하였을 때 어떤 버전에서는 특정 iOS버전이 빌드가 잘 되었고, 다른 컴퓨터에서 배포한 버전에서는 특정 iOS버전이 충돌이 나는 이슈가 있었다.