타이타늄에서 앱 삭제 시, 이벤트 처리 가능한가요 ?

안녕하세요 !
5.2.2.GA_webview_blacklist 로 개발중입니다.

Parse 데이터베이스 구조와 GCM/APNS를 사용하고 있습니다.
때문에 Parse에 Installation 객체를 등록하여 푸쉬 기능을 사용합니다.
문제는 앱을 삭제하거나 재설치 할때마다 installation이 새로 등록되어서…
중복 푸쉬가 가거나, 앱을 삭제해도 푸쉬가 전달되는 경우가 생깁니다.

앱이 삭제될 때, installation 을 삭제하거나 다른 방법으로 문제를 처리하고 싶습니다.
혹시 비슷한 이슈로 구현된 사례가 있는지 궁금합니다.

감사합니다.

삭제해도 push가 전달된다니 정말 신기하군요. :scream: 혹시 android의 경우 같은 senderid를 쓰는 경우가 있는 건 아닌가요?

삭제를 한 앱의 token으로 push를 하면 apns나 gcm으로 보낸 push 요청의 결과값에 토큰이 유효하지 않다거 하는 식의 결과값이 있었던 것으로 기억합니다. parse 에서는 해당 데이터를 parse api result로 같이 넘겨주는지는 잘 모르겠네요.

parse에서 쉽게 하는 방법을 알게 되면 공유해주세요~

installation객체를 등록할때 parse cloud code의 트리거를 사용해서 기존에 값을 제거해주시면 됩니다.

이 내용은 titanium용 parse android 모듈 리파지터리에 있는 내용입니다.

이거 처리 안해주면 푸시가 여러개 가겠죠…

2개의 좋아요

김동우님, 많은 도움 감사합니다 ㅎ

말씀해주신 AndroidID와 초기화 로직으로 처리하고 있는 중 입니다만…
혹시 IOS 쪽에 대한 처리도 있을까요 ?

IOS도 중복 푸쉬가 날라오는 사례가 존재합니다.
IMEI 라는 고유 코드로 비슷하게 처리하는 방식을 고민중입니다.
더 나은 사례가 있으시면 공유 부탁 드립니다 !

감사합니다 ^^

ios에서든 android에서든 installation을 한번만 생성하도록 코드를 작성하는게 중요합니다.
ios에서 push가 여러번 수신됨다면 installation이 여러번 생성된 경우 입니다.

최초 실행시 생성된 installation객체의 objectid나 deviceToken을,
properties adapter를 사용하여 local에 영구적으로 저장되는 model객체에 저장해서 여러번 생성되지 않도록 하면 됩니다.

모델 예제 입니다.

index.js에서 이렇게 불러서 앱 전체에서 설정등을 담는데 활용합니다.

// setting fetch
Alloy.Globals.settings = Alloy.Models.instance('settings');
Alloy.Globals.settings.fetch({
  success: function(results) {
    Ti.API.debug("settings.fetched");
    //
  },
  error: function(error) {
    Ti.API.error("settings.fetched" + JSON.stringify(error));
    //
  }
});

ios에서는 해당 app을 설치할 때 deviceToken이 결정되므로, 앱을 제거하면 해당 installatoin으로는 push를 보내도 수신할 대상이 없습니다.

자세한 설명과 공유 감사합니다 !

IOS쪽 지식이 부족하다보니 헷갈리는군요…
모델까지는 생각이 미치지 못 했던거 같습니다 ㅎ
적용해보고 결과 공유하겠습니다 !

감사합니다.