[Unity] Android 13(API 33)에서 Push 알림(Notifications)이 안 올 때
Unity3D/Android / 2023. 4. 17. 19:18
Android 13에서 Runtime에 android.permission.POST_NOTIFICATIONS Permission 요청하기.
----
1. Android Target API 33으로 셋팅
2. AndroidManifest.xml에 POST_NOTIFICATIONS Permission 추가
<manifest ...>
<application ...>
...
</application>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
</manifest>
3. 권한 요청 원하는 시점에 아래 함수 호출(함수 호출하면 Android 13이상 폰에서는 알림 권한 허용 요청 팝업이 뜸)
void CheckPermission_PostNotifications_Android13()
{
// 디바이스의 안드로이드 api level 얻기
// ex) Prints "Android OS API-33" on Android 13.0
// https://docs.unity3d.com/ScriptReference/SystemInfo-operatingSystem.html
string androidInfo = SystemInfo.operatingSystem;
Debug.Log("androidInfo: " + androidInfo);
int apiLevel = int.Parse(androidInfo.Substring(androidInfo.IndexOf("-") + 1, 3), System.Globalization.CultureInfo.InvariantCulture);
Debug.Log("apiLevel: " + apiLevel);
// 디바이스의 api level이 33 이상이라면 퍼미션 요청
if (33 <= apiLevel
&& !UnityEngine.Android.Permission.HasUserAuthorizedPermission("android.permission.POST_NOTIFICATIONS"))
{
UnityEngine.Android.Permission.RequestUserPermission("android.permission.POST_NOTIFICATIONS");
}
}
-----------------------------------------------------------------------------------------
[참고]
안드로이드 알림은 api level 26 과 33 에서 변경점이 있다. 내 앱이 대상으로 삼은 Sdk Version 범위에 이 버전이 포함되어 있다면 버전에 따라 분기 처리를 해주는 편이 좋다.
API level 26 (Android 8.0 Oreo) 이상 변경점
API level 33 (Android 13 Tiramisu) 이상 변경점
public void InitializeAndroidLocalPush()
{
// 디바이스의 안드로이드 api level 얻기
string androidInfo = SystemInfo.operatingSystem;
Debug.Log("androidInfo: " + androidInfo);
apiLevel = int.Parse(androidInfo.Substring(androidInfo.IndexOf("-") + 1, 2));
Debug.Log("apiLevel: " + apiLevel);
// 디바이스의 api level이 33 이상이라면 퍼미션 요청
if (apiLevel >= 33 &&
!Permission.HasUserAuthorizedPermission("android.permission.POST_NOTIFICATIONS"))
{
Permission.RequestUserPermission("android.permission.POST_NOTIFICATIONS");
}
// 디바이스의 api level이 26 이상이라면 알림 채널 설정
if (apiLevel >= 26)
{
var channel = new AndroidNotificationChannel()
{
Id = CHANNEL_ID,
Name = "pubSdk",
Importance = Importance.High,
Description = "for test",
};
AndroidNotificationCenter.RegisterNotificationChannel(channel);
}
}
[참고 내용 출처]
[참고]
반응형
'Unity3D > Android' 카테고리의 다른 글
[링크] 안드로이드 Gradle / IL2CPP 환경에서 프로세스 남는 현상 (0) | 2023.05.08 |
---|---|
[링크] Unity Play Asset Delivery 앱 빌드, Unity 대용량 앱 빌드( 150mb 초과 aab 빌드) (0) | 2023.04.25 |
[에러] Facebook Login 연동 시 Invaild key hash 에러 (0) | 2023.02.28 |
[빌드에러] com.android.ide.common.signing.KeytoolException: Failed to read key 'xxxx' from store (0) | 2023.02.03 |
[링크] 유니티 안드로이드 Gradle Version 관리 (0) | 2023.02.02 |