본문 바로가기

문제 해결

GitHub

Privacy Manifest 오류 (ITMS-91056)

“Privacy Manifest 오류 (ITMS-91056)” 섹션

App Store Connect에서 다음 오류가 발생하는 경우:

ITMS-91056: Invalid privacy manifest - 다음 경로의 PrivacyInfo.xcprivacy 파일이 유효하지 않습니다: …

앱 레벨의 설정을 확인하세요 PrivacyInfo.xcprivacy 파일에 추가하세요:

  • 파일은 유효한 JSON 형식이어야 합니다.
  • Apple 문서에 명시된 키와 값만 사용하세요.
  • 플러그인 패키지에 privacy manifest를 추가하지 마세요. 앱에 직접 추가해야 합니다.

자세한 내용은 Privacy manifest 및 iOS URL handlers 예시를 확인하세요.

Google Play Console AD_ID 권한 오류

“Google Play Console AD_ID 권한 오류” 섹션

Google Play에 앱을 제출한 후 다음과 같은 메시지가 나타날 수 있습니다:

Google Api Error: Invalid request - This release includes the com.google.android.gms.permission.AD_ID permission
but your declaration on Play Console says your app doesn't use advertising ID.

Facebook SDK에는 다음 항목이 포함됩니다: AD_ID 및 기타 광고 관련 권한이 포함됩니다. 앱에서 Facebook Login을 사용하지 않는다면, 다음에서 Facebook provider를 비활성화하세요: capacitor.config.ts:

import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
SocialLogin: {
providers: {
google: true,
facebook: false,
apple: true,
},
},
},
};
export default config;

그런 다음 실행하세요:

터미널 창
npx cap sync

이 플러그인은 실제 Facebook SDK 대신 stub 클래스를 사용하므로, 빌드 시 Facebook 의존성 및 권한이 포함되지 않습니다.

Android의 Google Sign-In 28444 오류

“Android의 Google Sign-In 28444 오류” 섹션

GetCredentialCustomException: [28444] Developer console is not set up correctly 설치된 APK의 서명 인증서, 패키지 이름 또는 정보가 Google Credential Manager의 정보와 webClientId Google Cloud Console의 정보와 일치하지 않을 때 발생합니다.

전체 Android Google 로그인 문제 해결 체크리스트. 로그인 실패 후, Logcat에서 다음을 필터링하세요: GoogleProvider; 플러그인에서 다음을 출력합니다: package, signingSha1, 그리고 마스킹된 webClientId 를 OAuth 클라이언트와 비교해 보세요.

“Family Link 감독 계정을 사용한 Google Sign-In” 섹션

Family Link 감독 계정에서 발생할 수 있는 오류:

NoCredentialException: No credentials available

Family Link 계정을 지원해야 하는 앱의 경우, Google 로그인 호출 시 authorized-account 필터링을 비활성화하세요:

import { SocialLogin } from '@capgo/capacitor-social-login';
await SocialLogin.login({
provider: 'google',
options: {
style: 'bottom',
filterByAuthorizedAccounts: false,
scopes: ['profile', 'email'],
},
});

핵심 사항:

  • 설정 filterByAuthorizedAccounts 대상 false; 기본값은 true.
  • 플러그인이 자동으로 다음을 사용하여 재시도합니다: standard 스타일이면 bottom 스타일이 다음 오류로 실패하면 NoCredentialException.
  • 이 옵션은 Android에만 적용됩니다. iOS에서는 Family Link 계정이 정상적으로 처리됩니다.
  • 에러 메시지는 다음을 비활성화할 것을 권장합니다: filterByAuthorizedAccounts 이 실패가 감지되면.

액세스 토큰 저장 위치

“액세스 토큰 저장 위치” 섹션

사용 @capgo/capacitor-persistent-account 앱에서 access 또는 refresh token을 위해 네이티브 보안 저장소가 필요한 경우입니다.

Android에서는 Account Manager에 데이터를 저장하며, iOS에서는 Keychain에 데이터를 저장합니다.