위치 권한-항상 허용 프롬프트 커스텀 가이드
-
사용자가 위치 권한을 앱 사용 중으로 하더라도 위치 항상 허용을 설명을 통해 독려할 수 있습니다.
-
사용자가 위치 권한을 항상 허용으로 하지 않고 알림을 닫더라도 지속적인 위치 수집이 가능합니다.
-
심사에 필요한 UI를 쉽게 추가하는 API를 제공하며 상황에 맞게 위치 권한을 요청하는 프롬프트가 미리 구현되어 있습니다.
loplat SDK ‘위치권한-항상 허용 프롬프트’ (아래 이미지)
이 가이드에서는 각 프롬프트에 대한 상세 설명과 커스터마이즈하는 방법을 안내합니다.
프롬프트 1. 백그라운드 위치 권한 액세스에 대한 알림

알림 커스텀은 다음 두 가지 방법이 있습니다.
- 기본 SDK 알림에 Icon, Title, Text만 바꾸는 방법
- 고객사 자체 알림을 사용하도록 SDK에 설정하는 방법
기본 알림 커스텀 방법
Plengi.setDefaultNotificationInfo()에 Icon, Title, Text 리소스 id를 담아 호출해 주세요.
알림에 앱 이름은 loplat이 아닌 loplat SDK가 탑재될 앱의 이름으로 출력됩니다.
- Java
- Kotlin
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
Plengi plengi = Plengi.getInstance(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setDefaultNotificationInfo(
R.drawable.noti_small_icon,
R.string.noti_title,
R.string.noti_text
);
}
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
val plengi = Plengi.getInstance(context)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setDefaultNotificationInfo(
R.drawable.noti_small_icon,
R.string.noti_title,
R.string.noti_text
)
}
자체 알림을 사용하는 방법
알림 자체를 커스텀하려면 사용할 알림을 생성한 뒤 Plengi.setDefaultNotificationInfo() 를 호출해 주세요.
- Java
- Kotlin
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
// 알림부터 시작되는 전체 플로우를 커스텀
Intent intent = new Intent(context, 알림 클릭 시 보여줄 액티비티.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE);
Plengi plengi = Plengi.getInstance(context);
/* NotificationCompat.Builder의 두 번째 param 값은 반드시
Plengi.getDefaultNotificationChannelId() 를 사용해 주세요. */
Notification notification = new NotificationCompat.Builder(this, plengi.getDefaultNotificationChannelId())
.setContentTitle("알림 제목")
.setContentText("알림 내용")
.setContentIntent(contentIntent)
...
.build();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setDefaultNotificationInfo(notification);
}
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
// 알림부터 시작되는 전체 플로우를 커스텀
val intent = Intent(context: Context, 알림 클릭 시 보여줄 액티비티.class)
val contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE)
val plengi = Plengi.getInstance(context)
/* NotificationCompat.Builder의 두 번째 param 값은 반드시
Plengi.getDefaultNotificationChannelId() 를 사용해 주세요 */
val notification = NotificationCompat.Builder(this, plengi.getDefaultNotificationChannelId())
.setContentTitle("알림 제목")
.setContentText("알림 내용")
.setContentIntent(contentIntent)
...
.build()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setDefaultNotificationInfo(notification)
}
프롬프트 2. 백그라운드 위치 권한 액세스에 대한 알림을 클릭했을 때

| 버튼 | 동작 |
|---|---|
| 위치 권한 변경 | 백그라운드 위치 정보 액세스 내용 공개를 위한 대화상자를 출력합니다. |
| 알림 설정 변경 | 알림을 OFF할 수 있고 OFF한 경우에도 위치 권한이 있다면 지속적인 위치 획득이 가능합니다. |
| 모든 혜택 중지 | 혜택을 받을 수 없다는 팝업이 뜬 후 위치 권한 설정을 위해 앱 설정 화면으로 이동합니다. |
알림 채널 설정과 대화상자의 안내 문구(guide_description)도 커스텀이 가능합니다.
- Java
- Kotlin
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
Plengi plengi = Plengi.getInstance(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setDefaultNotificationChannel(
// Loplat SDK의 기본값을 사용하려면 0
R.string.channel_name,
// Loplat SDK의 기본값을 사용하려면 0
R.string.channel_description,
// Loplat SDK의 기본값을 사용하려면 0
R.string.guide_description
);
}
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
val plengi = Plengi.getInstance(context)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setDefaultNotificationChannel(
// Loplat SDK의 기본값을 사용하려면 0
R.string.channel_name,
// Loplat SDK의 기본값을 사용하려면 0
R.string.channel_description,
// Loplat SDK의 기본값을 사용하려면 0
R.string.guide_description
)
}
프롬프트 3. 백그라운드 위치 정보 액세스 내용 공개를 위한 대화상자
기본 제공하는 대화상자가 아닌 Custom Layout을 사용할 수 있습니다.
"취소 / 확인" 버튼을 제외한 상단 Layout은 커스텀이 가능합니다.
| 기본 대화상자 | Custom Layout 대화상자 |
|---|---|
![]() | ![]() |
이미지는 필수가 아니며 자사 캐시플레이스 앱의 경우 가독성을 높이기 위하여 추가했습니다.
Application.onCreate()에서 Plengi.setBackgroundLocationAccessDialogLayout()을 아래와 같이 선언합니다.
- Java
- Kotlin
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
Plengi plengi = Plengi.getInstance(context);
// 백그라운드 위치 심사를 위한 Prompt dialog layout
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setBackgroundLocationAccessDialogLayout(R.layout.custom_dialog)
}
// Plengi 설정 API(커스텀 알림 설정, PlengiListener)은 반드시 Application.onCreate()에서 호출해야 합니다.
val plengi = Plengi.getInstance(context)
// 백그라운드 위치 심사를 위한 Prompt dialog layout
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
plengi.setBackgroundLocationAccessDialogLayout(R.layout.custom_dialog)
}
Custom Layout을 사용하는 경우
문구에는 아래와 같은 요소들이 포함되어야 합니다.
-
'위치' 라는 용어
-
'백그라운드'/'앱이 닫힐 때'/'항상 사용 중'/'앱이 사용되지 않을 때' 중 하나를 사용하여 사용의 성격이 백그라운드에 있다는 것을 표현
ex) "이 앱을 사용하고 있지 않을 때도"
-
백그라운드에서 위치를 사용하는 모든 기능 목록
ex) "주변 혜택을 사용자에게 알려주기 위해"
-
사용 허용 범위를 광고로 확장하는 경우 다음 문구를 포함해야 합니다. '이 데이터는 광고를 제공/광고 기능을 지원/광고를 지원하기 위해서도 사용됩니다.'
ex) "이 데이터는 광고를 제공하기 위해서도 사용됩니다."
프롬프트 4. 백그라운드 위치 권한 요청


