[앱개발] iOS 13 에서바뀐 점들

예봄아빠
5 min readSep 22, 2019

--

앱 개발 시 iOS 13 에서 바뀐 점 몇개를 정리해봤습니다.
이 외에도 많은 변화가 있겠지만, 회사에서 개발하고 있는 앱과 관련한 부분만 정리했습니다.

그리고 여기 있는 사항은 XCode 11 (iOS SDK 13) 에서만 적용되는 것도 있고, SDK 버전 상관없이 발생하는 것도 있습니다. XCode 11 빌드 시에 적용되는 것은 따로 표시했습니다.

블루투스 권한

블루투스 기능을 사용하기 위해 iOS 13부터는 사용자로부터 권한을 받아야합니다.

  • iOS 설정 -> 앱 -> 블루투스 권한 설정 새로 추가됨.
  • info.plist에 NSBluetoothAlwaysUsageDescription key 추가 해야함. 설정 없으면 Crash 발생
  • XCode 11 빌드 시 적용됨

Silent Push

  • 기존에는 push정보에 content-available 속성을 1로 주면 silent push를 보낼 수 있었습니다.
  • iOS 13부터는 push헤더에 반드시 apns-push-type, apns-priority 속성을 추가해야 합니다.
  • apns-push-type은 alert 혹은 background를 가질 수 있습니다.
  • apns-priority 는 5 혹은 10을 가질 수 있습니다.
  • Silent push의 경우는 apns-push-type을 background로 설정해야 하고 apns-priority는 반드시 5로 해야합니다. 그렇지 않으면 단말에서 무시됩니다.
  • 결과적으로 silent-push의 경우는 아래와 같이 설정해야 합니다.
  • Content-available: 1, apns-push-type: “background”, apns-priority: 5
  • [참고] https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns

VoIP Push

  • VoIP Push의 경우 Push를 받으면 CallKit의 reportNewIncomingCall(with:update:completion:)을 호출해야합니다. (반드시 iOS 콜 수신화면을 보여줘야 한다는 의미)
  • 그렇지 않으면 앱이 강제종료되고, 이것이 몇 번 반복되면 더 이상 VoIP Push를 받을 수 없게 block된다고 합니다.
  • 따라서 상황에 따라서 Call 화면을 안띄웠던 경우가 있었다면, 지금은 무조건 Call 화면을 띄운 이후에 모든 상황을 처리해야 합니다. (심지어 에러상황일때라도)
  • VoIP Push를 통화 이외의 용도로 사용하는 앱들 때문에 생긴 제약이라고 합니다.
  • XCode 11 빌드 시 적용됨
  • [참고] https://developer.apple.com/documentation/pushkit/pkpushregistrydelegate/2875784-pushregistry

WiFi 정보 가져오기

  • iOS에서 CNCopyCurrentNetworkInfo 를통해서 정보를 가져올 수 있습니다.
  • 하지만 iOS13 부터는 아래 3가지 중 하나를 만족해야 WiFi 정보를 가져올 수 있다고합니다.
  1. 위치 정보에 대한 권한이 허용되어 있어야 함.
  2. NEHotspotConfiguration API 를 사용해서 WiFi 네트워크를 설정한 경우
  3. VPN 사용 가능 권한이 있는 앱

다크 모드를 무시하려면

ModalPresentationStyle

  • iOS 13부터는 viewcontroller를 present할 때 새로운 modalPresentationStyle type이 생겼고 디폴트로 적용됩니다.
  • modalPresentationStyle = .automatic 인데 viewcontroller가 아래에서 위로 팝업되는 형태이고, 닫을때는 ‘pull-to-dismiss’ gesture 로 닫아야 합니다.
  • 기존 iOS12처럼 동작시키려면 modalPresentationStyle = .fullScreen 을 직접 지정 해줘야 합니다.
  • XCode 11 빌드 시 적용됨
  • [참고] https://zonneveld.dev/ios-13-viewcontroller-presentation-style-modalpresentationstyle/

UITextField

  • UITextField 의 content type이 telephone number인 경우 자동으로 사용자의 전화번호를 입력할 수 있는 자동 완성이 보였지만 지금은 제공하지 않는 것 같습니다.
  • 보안 때문에 제거한 건지, 버그인건지는 확실 치 않습니다.

--

--