App 에서 위치 정보를 사용하는 경우

사용자가 위치 허용을 하지 않았을때

Android 는 앱을 재시작하게하여 다시 권한을 물어 다시 권한을 허용할수 있습니다.

 

하지만 iOS 는 앱을 재시작하더라도 권한을 묻는화면이 뜨지않고

셋팅창에서 앱을 눌러 직접 위치 허용을 해줘야합니다.

 

이때 코드단에서 셋팅창으로 이동하고 싶을때 아래 코드를 사용합니다.

 

DependencyService 를 이용하여

 

아래 처럼 코드하면 앱 셋팅창이 뜨게됩니다.

 

 

 

            if (!CLLocationManager.LocationServicesEnabled)

            {

                if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))

                {

                    UIApplication.SharedApplication.OpenUrl(new NSUrl("App-Prefs:root=General"));

                }

                else

                {

                    UIApplication.SharedApplication.OpenUrl(new NSUrl("prefs:root=General"));

                }

            }

            else if (CLLocationManager.Status == CLAuthorizationStatus.Denied ||

                     CLLocationManager.Status == CLAuthorizationStatus.NotDetermined ||

                     CLLocationManager.Status == CLAuthorizationStatus.Restricted)

            {

                UIApplication.SharedApplication.OpenUrl(new NSUrl(UIApplication.OpenSettingsUrlString));

            }

 

 

 

 

 

윈도우에서 작업하던 소스를 갑사에서 mac 에서 소스를 열어서 테스트 하는데
이미지 탭한 경우 이벤트 발생이 안되는 현상 발생되었다

일단 결론부터 말하면 원인은 4월2일 xCode 11.4 로 업데이트 되었는데 
이전에 배포되었던 Xamarin.iOS 13.16 버전이 문제가 있어 이미지 탭한 경우 
탭 이벤트가 발생안되는 현상이었다.

[아래 링크 참고 (모든 탭 이벤트 먹통됨)]

언제인지 모르겠으나 이후 MS 에서 문제점을 알고 버그 픽스 버전을 출시예정이라고 한다.
(현시점 2주안에 해결해 준다고 하는데.....)

Xamarin.iOS 이전 버전을 설치하여 해결가능하다고 하여 아래링크의 pkg 를 받아 설치해보았다.

설치하고 정상동작 되는 걸 확인.


윈도우에서 개발을 하여 테스트를 하고 있었는데 
윈도우에서 비쥬얼 스튜디오를 이용해 작업하는경우 mac 연결 시
자동으로 Xamain.iOS 버전을 13.16.0.11 을 설치했었는데 그땐 에뮬 동작이 제대로 동작된다.;
하지만 iOS 에서 솔루션 열면 또 안되는.. 머 이런 .

하필 갑한테 보여주는날.. ㅜㅠ

결론 
이전버전으로 돌리거나 
좀 기다렸다가 최신으로 업데이트 받으면 된다.


* 추가

mac 에서는 preview 버전 13.18 을 설치하면 정상 동작 된다고 한다.

Visual Studio 를 이용해 ipa 파일을 생성하고 Application Loader 를 이용해 

ipa 파일을 업로드 하려는데... 아무리 찾아도 보이지 않아 확인해보니

xcode 11 버전 부터 Application Loader 를 지원하지 않는다고 한다..

(맥미니를 새로 구입하면서.. 이런상황이...)


1. 앱 암호를 생성해야한다.

https://appleid.apple.com/account/manage

위 사이트로 들어가 로그인하고 보안 섹션의 앱암호 에서 암호 생성을 하고 기억한다.

(참고로 암호는 내가 지정하는것이 아니라 내가 특정 단어를 입력하면 단어 기준으로 암호가 만들어진다.)


2. 터미널을 실행히야 엡을 업로드 한다.

유틸리티에서 터미널을 실행하고


아래 명령어를 실행한다.

(바탕화면에 ipa 파일이 있다는 가정이다.)

xcrun altool --upload-app --type ios --file "Desktop/kjun.iOS.ipa" --username "ios 계정(메일)" --password "앱암호"


아래처럼 업로드 완료



앞서 만들어진 프로비전 프로필을 프로젝트에 적용하는 방법입니다.

(윈도우에서 처리하는 방법입니다.)

 

iOS 프로젝트 속성의 iOS 번들 서명에서 앞서 등록했던 프로비전 프로필이 목록에 나타나지 않습니다.

 

이를 나타내기 위해선 Visual Studio 의 도구 > 옵션을 클릭

 

Xamarin > Apple Account 를 클릭합니다.

 

 

여기에서 유의사항은 이때 Mac 에 비번을 입력해야합니다.

항상 허용을 하면 다음부터 물어보지 않습니다.

(가끔 비쥬얼 스튜디오가 반응이 없을땐 Mac 을 확인해주세요. 항상허용을 하더라도 물어볼때도 있음.)

 

전 2단계 인증을 해서 2단계인증 코드를 입력합니다.

 

연결이되면 아래처럼 좀전에 추가했던 프로비저닝 프로필이 목록에 있는걸 확인 할수 있습니다.

(만약 목록에 보이지 않는다면 '모든 프로필 다운로드' 버튼을 클릭하면 됩니다.)

 

닫고 iOS 프로젝트 속성의 iOS 매니패스트로 가서

번들 식별자를 이전에 AppID 등록때 사용했던 kr.kjun.appID(예시) 로 번들 식별자를 변경합니다.

 

이제 번들 서명으로 가면 아래 처럼 프로비전 프로필에 등록했던 프로비전 프로필이 목록에 나타납니다.

 

 

선택 후 빌드하면 .ipa 파일이 만들어 지고 이를 배포하면 됩니다.

 

프로젝트에서 앱을 배포버전으로 빌드하기 위해선 프로비전 프로필을 만들어야합니다.

 

https://developer.apple.com/account/ 로 이동하고 개발자 로그인합니다.

 

좌측메뉴에서 Provisioning Profiles 의 Distribution 메뉴를 클릭합니다.

 

우측 상단의 + 버튼을 클릭합니다.

 

아래 그림과 같이 총 4단계로 진행됩니다.

App Store 에 배포할 목적이므로 App Store 를 선택하고 Continue 클릭