Android badge 설정하는법좀 문의드립니다!!

안녕하세요!! 날씨가 참 좋네요

현재 Ti 3.4.1 GA로 개발중입니다.

ACS 를 사용하고 있구요 푸쉬 발송시 badge 값을 주어도 Android 에서는 뱃지값이 노출이 되지 않더라구요…

iOS 는 정상 노출됩니다.

찾아보니 Android 는 기본 스펙이 아닌거같던데…

여기를 보니
BADGE_COUNT_UPDATE 같은걸로 뱃지를 처리하는거같드라구요

현재 Titanium 에서는 어떻게 처리가 가능할까요…

다른분들은… 어떻게 해결하셨나요…ㅎㅎ;;

감사합니다

오늘도 좋은 하루 되세요!!!

Android에는 통일된 방법이 없습니다. 런처마다 정한 방식으로 해야합니다.
타이타늄이라서 그런게 아니라 안드로이드 자체가 원래 그렇습니다.

관련된 내용은 아래 링크에 잘 설명 되어 있네요.

그래서 이런걸 한방에(?) 해주는 애들도 나오긴 했는데 Android L 기본 런처에서는 이게 안되나 봅니다.
(카톡도 Android L에서는 안되네요.)

우오오옷!!! 감사합니다.

네 안드로이드 스펙 자체가… 기본이 아니라고 듣고서 좌절했었네요 ㅠㅠ
허엇… 근데 titanium 용이 아니라… 이걸 어떻게 적용해야할지… 고민해봐야겠네요 ㅠ…a

첫번째 글에 설명된 링크에 나온 두가지 방법 중 첫번째 방법은 Intent 와 BroadCast를 이용한 방법인데 해당 Titanium API가 존재하므로 될 것 같습니다. 문제는 이거나 저거나 모든 안드로이드 버전과 런처를 대응한다는건 사실상 불가능인거네요.

어떤앱을 만드시는지 모르겠지만 뱃지가 그렇게 중요한 앱이 아니라면 네이티브로 할지라도 어차피 전부 대응할수 없는 거니 기능을 제외하는 것도 좋은 방법일 것 같아요.

기본3사 제품에 대해선 가능하다고 나와있어서… 그거까진 구현해야될거같아서
일단 위의 내용을 참조하여 작성중인데요 … ㅎㅎ

try
	{
		var Intent = Ti.Android.createBroadcastIntent({
			action: 'android.intent.action.BADGE_COUNT_UPDATE'
		});
		
		var PackageName = 'com.j.msapp';
		var ClassName = 'com.j.msapp.mscapp'; 또는 MscappActivity
		
		Intent.putExtra('badge_count_package_name', PackageName);
		Intent.putExtra('badge_count_class_name', ClassName);
		
		Intent.putExtra('badge_count', badge);
		
		Ti.Android.currentActivity.sendBroadcast(Intent);
	} catch(ex)
	{
		Ti.API.info(ex);
	}

이렇게 했는데… 반응이 없네요… ㅠ 정상적으로 브로드캐스트가 전달 된걸까요…

에러도 없고…

디버그 모드라서 안되는걸까요… 왜 이러는걸까요 ㅇㅁㅇ…

getPackageName, getClassName 등은… undefined 가 나와서 직접 입력했습니다.

차근차근 다시 해보니 이제 작동 되네요 ㅇㅁㅇ//

var Intent = Ti.Android.createBroadcastIntent({
				action: 'android.intent.action.BADGE_COUNT_UPDATE'
			});
			
			var PackageName = 'com.j.msapp';
			var ClassName = 'com.j.msapp.MscappActivity'; // AndroidManifest.xml 에서 확인
			
			Intent.putExtra('badge_count', parseInt(badge));
			Intent.putExtra('badge_count_package_name', PackageName);
			Intent.putExtra('badge_count_class_name', ClassName);
			
			Ti.Android.currentActivity.sendBroadcast(Intent);

도움 주셔서 감사합니다 ㅎㅎ

badge_count 의 값을 parseInt 로 하지 않으면 정상 작동이 안되네요 문자로 인식해버리나봅니다…ㅎㅎ;;

1개의 좋아요

공유 감사합니다!! :+1: