1단말내에 같은 앱을 공존시키는 방법(ios편)
3619 단어 iOSSwiftObjective-C아이폰Xcode
개요
개발용, 프로덕션용 등 같은 단말에 접속처가 다른 앱을 넣을 수 있으면 편리합니다.
1단말에 같은 Bundle Identifier
에서는 넣을 수 없기 때문에, 환경에 따라서 Bundle Identifier
를 바꾸는 것으로 실현할 수 있습니다.
또한 Push 통지를 하는 앱의 경우 Bundle Identifier
매번 인증서가 필요하므로 주의가 필요합니다.
즉, 개발, 스테이징, 프로덕션 연결용 앱을 공존시키고 싶다면, 각각의 서버용의 Bundle Identifier
를 만들어, 각각에 다른 Push 증명서를 서버에 배치할 필요가 있습니다.
방법
Preprocessor Macros
, Swift의 경우 Other Swift Flags
를 설정합니다. (Swift의 경우 -D DEBUG
와 같이)Preprocessor Macros
를 보고 프로그램상에서 다음과 같이 분기합니다. #ifdef DEBUG
// ...
#elif RELEASE
// ...
#else
// ...
#endif
Other Swift Flags
를 보고 프로그램에서 다음과 같이 분기합니다. #if DEBUG
// ...
#elseif RELEASE
// ...
#else
// ...
#endif
그런 다음
Bundle Identifier
를 변경하면 됩니다.예)
ko2ic.sample.dev
마찬가지로 제품 이름을 각 환경별로 변경합니다.
Product Module Name은 모두 같은 이름이어야 합니다. Module 이름이므로 알파벳으로 씁니다.
$(PRODUCT_NAME)
로 한다. TEST_HOST
를 검색하여 각 제품 이름에 맞게 다시 작성합니다. 이것이 다르면 테스트가 작동하지 않습니다. Apns를 사용하는 경우에는 Code Signing Entitlements도 Configuration별로 만듭니다. 그렇지 않으면 ios10 이상에서는 장치 토큰을받을 수 없습니다.
개발.entitlements
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>
스테이징.entitlements
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>ad-hoc</string>
</dict>
</plist>
프로덕션.entitlements
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>production</string>
</dict>
</plist>
Reference
이 문제에 관하여(1단말내에 같은 앱을 공존시키는 방법(ios편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ko2ic/items/1926de0895e9f277871b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)