GCM엣 FCM으로 마이그레이션을 하고 있습니다.
GCM은 여기 저기 소스 찾아가며 구현했었는데 제가 이제 막 안드를 접한 초보이다 보니 막히는 부분이 생기네요.
기존 GCM 소스에서는 RegistrationIntentService 에서 아래처럼 LocalBroadcastManager를 통해서 MainActivity로 토큰을 넘겨줬습니다.
// GCM Instance ID에 해당하는 토큰을 획득하면 LocalBoardcast에 COMPLETE 액션을 알린다.
// 이때 토큰을 함께 넘겨주어서 UI에 토큰 정보를 활용할 수 있도록 했다.
Intent registrationComplete = new Intent(QuickstartPreferences.REGISTRATION_COMPLETE);
registrationComplete.putExtra("token", token);
LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
그런데 FCM은 RegistrationIntentService 가 없어진것 같더라구요.
대신 아래처럼 FirebaseInstanceIdService 에서 바로 토큰을 서버로 전송하게 샘플코드가 나와있네요.
public class MyInstanceIDListenerService extends FirebaseInstanceIdService
{
private static final String TAG = "MyInstanceIDLS";
@Override
public void onTokenRefresh() {
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + token);
//sendRegistrationToServer(refreshedToken);
}
}
그런데 문제는 토큰을 받았다고 바로 전송할게 아니라 로그인을 하게되면 userId와 함께 토큰을 서버로 전송해야 합니다.
웹뷰에서 유저가 로그인 -> 자바스크립트로 메인액티비티 함수 호출 -> 유저 아이디와 토큰을 서버로 전송
이렇게 해야 하는데 토큰값이 저 FirebaseInstanceIdService 안에 있어서 어떻게 해야 할지 모르겠네요.
결론은 저 sendRegistrationToServer 함수와 토큰을 메인 액티비티에 놓고
원하는 타이밍(Html에서 자바스크립트로 호출)에 서버로 전송하고 싶습니다.
까막눈에서 구글검색만으로 앱을 만드려니 모르는게 너무 많네요.
조언 부탁드립니다.