fcm push notification example / (fcm) 푸시알림 클릭시 지정한 URL로 이동하기


HKH

Share

안녕하세요

 

푸시알림을 통해 앱을 열었을 때 지정한 URL이 바로 열리게 하는 방법입니다.

 

웹뷰를 사용하는 하이브리드앱 기준입니다.

 

https://trandent.com/board/Android/detail/745

 

이 글을 보시면 저의 경우 nodejs 서버를 통해서 푸시알림을 발송 하는데

 

중간에   

function sendTopicMessage(title, content, imgUrl, link) {

var message = { title : title , content : content, imgUrl : imgUrl , link : link }

 

라는 부분이 있습니다.

 

여기서 link를 사용하는 방법 입니다.

 

1.FirebaseMessagingService.java


기존 코드에서 추가되는 부분만 작성 하겠습니다.

 

Bundle을 사용해서 앱이 초기 구동될때 url을 전달하게 됩니다.


nodejs서버를 통해 발송한 메세지중 link url을 받아옵니다. 

 

private void sendNotification(String messageBody) {

String link = "";

try {
JSONObject obj = new JSONObject(messageBody);
link = obj.getString("link");
}catch(Exception e){

}
//String title =
Intent intent = new Intent(this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putString("url", link);
intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);

}

빨간색 부분이 추가되는 부분입니다.

 

Bundle을 선언하고 전달 받은 link url을 담아줍니다.

 

이제 Push 알림 창에서는 메세지로 전송한 LINK URL을 담고 있습니다.

 

2. MainActivity.java

 

제 앱의 경우 웹뷰를 통해 앱 구동시 https://trandent.com URL을 열도록 되어있습니다.

 

private static String target_url = https://trandent.com;

 

하이브리드 앱이라면 onCreate 안에서 webview.loadUrl("도메인"); 코드를 통해 메인 페이지를 열게 되어 있을텐데요

 

메인 페이지가 열리기 전에 1번에서 Bundle에 담은 Url이 존재 하는지 검사를 해서 만약 존재한다면 target_url을 바꿔주는 방법입니다.

 

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if( bundle != null){
if(bundle.getString("url") != null && !bundle.getString("url").equalsIgnoreCase("")) {
target_url = bundle.getString("url");
}
}

첫번째로 Bundle이 null 인지 아닌지 검사를 하고 null 이 아니라면 url을 꺼내옵니다

마찬가지로 url이 null 이거나 공백이 아니라면 기존의 메인페이지 target_url을 전달받은 url로 바꿔줍니다.

 

그리고 나서 loadUrl을 바뀐 URL로 해주면 끝입니다.

 

만약 네이티브 앱인데 푸시알림 클릭시 웹뷰를 먼저 띄우고 싶으시다면 URL이 존재하는 경우 웹뷰 생성부터 별도로 구성하시면 됩니다.

 

 

클릭하면 앱이 열리고

 


 

메인 페이지가 아닌 지정한 URL이 바로 열리게 됩니다.

 


 

 

다음으로는 하이브리드앱에서 메뉴부분을 네이티브로 따로 구현하는 방법을 올리도록 하겠습니다.

 

첨부파일
Sign in required
  • : {{i.writer }}
    {{i.regdate}}


    {{i.content||breakFilter }}