지난번에 ios개발을 하던 도중 ios는 aos와 다르게 installed app에 대한 정보를 가져올수 없어 이에대해 알아보고자 저 스스로 복습하기 위해 sandbox에 대한 개념을 공부하였습니다.
이번엔 왜 aos는 되고 IOS는 installed app에 대한 정보를 가져오지 못하는지에 대해 알아보겠습니다.
일단 결론부터 말씀드리자면 iOS는 강력한 샌드박스 정책을 적용하여 앱 간의 데이터 접근을 엄격하게 제한하기 때문입니다.
즉, iOS에서는 앱이 다른 앱의 정보를 수집하는 것을 원천적으로 차단하고, Android는 제한적이지만 가능한 방식으로 허용하고 있습니다.
| 비교 항목 | Android | iOS |
|---|---|---|
| 앱 목록 조회 가능 여부 | ✅ 가능 (제한적) | ❌ 불가능 |
| 방법 | PackageManager (QUERY_ALL_PACKAGES 필요) | 원천적으로 차단 |
| 샌드박스 강도 | 중간 (제한적 허용) | 매우 강함 (완전 차단) |
| 예외 허용 | 일부 기업용 앱 또는 권한 부여 시 가능 | 기업 관리용(MDM)에서만 가능 |
Android는 제한적으로 앱 목록을 가져올 수 있지만, iOS는 시스템적으로 차단!
Android에서는 PackageManager를 사용하여 설치된 앱 목록을 가져올 수 있습니다.
하지만, Android 11(API 30) 이상부터는 제한이 강화되어 특정 앱만 조회 가능합니다.
✅ Android 코드 예제 (설치된 앱 목록 가져오기)
val pm = packageManager
val packages = pm.getInstalledPackages(0)
for (packageInfo in packages) {
Log.d("InstalledApp", "패키지 이름: ${packageInfo.packageName}")
}
👉 Android 11 이상에서는 QUERY_ALL_PACKAGES 권한 필요!
<manifest>
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
</manifest>
✅ 이렇게 하면 설치된 앱 목록을 가져올 수 있음.
iOS는 강력한 샌드박스 정책을 적용하여, 앱이 다른 앱 정보를 조회하는 것을 원천적으로 차단합니다.
즉, 자신의 앱 데이터 외에는 접근할 수 없음.
즉, iOS에서는 시스템적으로 앱 목록 조회 기능이 제공되지 않음.
iOS는 사용자의 개인 정보를 보호하기 위해 앱 목록 접근을 차단.
설치된 앱 정보를 보면 사용자의 관심사, 금융 앱, SNS 앱 여부 등을 추측할 수 있음 → 개인정보 침해 위험!
Android에서는 특정 앱을 감지하여 경쟁사 앱을 차단하거나 광고 타겟팅에 사용할 수 있음.
예: 어떤 앱이 "카카오톡이 설치되어 있는지 확인하고 특정 기능을 활성화"할 수도 있음.
Apple은 이런 방식의 사용자 데이터 수집을 금지.
악성 앱이 다른 앱을 감지하여 공격할 가능성 차단.
예: "설치된 은행 앱을 감지하고, 피싱 공격을 시도"하는 악성 앱 차단.
즉, iOS는 철저한 보안 정책을 유지하기 위해 앱 간 접근을 원천적으로 차단.
일반적인 방법으로는 불가능하지만, 일부 예외적인 경우 가능.
기업에서 관리하는 기기(예: 회사 직원용 iPhone)에서는 MDM을 통해 설치된 앱 목록을 가져올 수 있음.
DeviceCheck API나 Configuration Profile을 이용.
iOS를 탈옥하면 제한이 풀려서 설치된 앱 목록을 가져올 수 있음.
하지만, 보안상 위험하고 App Store에서 금지됨.
일반적인 앱 개발에서는 iOS에서 앱 목록을 가져오는 것이 불가능!
| 질문 | Android | iOS |
|---|---|---|
| 설치된 앱 목록 조회 가능? | ✅ 가능 (PackageManager 이용) | ❌ 불가능 (샌드박스 보호) |
| 어떻게 막혀있나? | Android 11부터 제한 강화 | 원천적으로 불가능 |
| 개인정보 보호 수준 | 제한적 보호 | 강력한 보호 |
| 악성 앱 탐지 가능? | 가능 (다른 앱 감지 가능) | 불가능 (샌드박스로 차단) |
| 예외적인 경우 | MDM 관리 기기, 루팅 시 가능 | MDM 사용 시 일부 가능, 탈옥 필요 |
✅ Android는 보안이 강화되었지만, 여전히 앱 목록을 가져올 수 있음 (그래도 googleplaystore에 올리기엔 빡셈..)
❌ iOS는 아예 앱 간 데이터 접근을 차단하여 불가능