1

알림을 보내기 위해 Firebase를 사용하는 앱이 있습니다. 내가 그들을 보내 알림은 스타일이 제공되며, 최대 표시되지만 통지의 나머지로 내가 대신에 일을, 그것이 의도를 수행 클릭알림의 의도가 내 URL을 따르지 않습니다.

또한
Notification notification = new NotificationCompat.Builder(getApplicationContext()) 
      .setSmallIcon(R.drawable.lascanadaslogo) 
      .setContentTitle("Titulo") 
      .setContentIntent(pi) 
      .setAutoCancel(true) 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(remoteMessage.getNotification().getBody())) 
      .build(); 

을 설명하지 않은 경우 내 그것을 내 애플 리케이션 (MainPage)에 URL을 URL을. 나는 당신에게 전체 코드를 보여

가 배경에있을 때 알림 메시지가 응용 프로그램으로 전송됩니다
public class MyFirebaseMessagingService extends FirebaseMessagingService{ 

    private static final String TAG = "FCM Service"; 

    /** 
    * Called when message is received. 
    * 
    * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. 
    */ 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 

     Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.lascanadas.es/reservas")); 
     PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, 0); 
     Notification notification = new NotificationCompat.Builder(getApplicationContext()) 
       .setSmallIcon(R.drawable.lascanadaslogo) 
       .setContentTitle("Titulo") 
       .setContentIntent(pi) 
       .setAutoCancel(true) 
       .setStyle(new NotificationCompat.BigTextStyle().bigText(remoteMessage.getNotification().getBody())) 
       .build(); 

     NotificationManager notificationManager2 = (NotificationManager) getApplicationContext().getSystemService(Service.NOTIFICATION_SERVICE); 
     notificationManager2.notify(0, notification); 

     //Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); 
    } 
} 

답변

0

Firebase Console for Notification을 사용하는 경우 사용자가 앱을 사용하지 않는 경우 (앱이 배경에 있음) 알림을 제어 할 수 없으면 Firebase SDK에서 모든 작업을 수행하고 알림을 클릭하면 Launcher Activity (MainActivity). 그러나 사용자가 앱을 사용할 경우 (전경에서) onMessageReceived() 메서드가 호출되어 논리가 작동합니다. 그러나 사용자가 앱을 사용하지 않을 때마다 항상 발생하므로 서버를 사용하여 데이터 메시지를 사용하는 것이 좋습니다. 서버를 사용하면 훨씬 쉽습니다. 거기에서 당신의 onMessageReceived 항상 호출됩니다 당신은 데이터를 간단하게 할 수 검색 할 수 있습니다

Map<String,String> your_data = remoteMessage.getData; 
+0

가 대단히 감사합니다! 나는 서버로 라스베리를 가지고있다. 어떤 프로그램을 사용해야합니까? –

+0

@Jorge. 나는 그것을위한 간단한 대안이 있다는 것을 압니다. 나는 그걸로 당신을 도울 것입니다. 'johnnnoni @ gmail.com'. 코멘트에 오랫동안 토론하는 것이 바람직하지 않습니다. 이메일을 사용하십시오. – Xenolion

0

, onMessageReceived()가 호출되지 않습니다; 알림은 SDK에 의해 생성됩니다. 이 the documentation에 설명되어 있습니다 : 앱이 배경에있을 때

알림 메시지가 전달. 이 경우 알림은 장치의 시스템 트레이로 전달됩니다. 알림을 사용자가 탭하면 기본적으로 앱 실행기가 열립니다. 당신은 알림 생성을 제어 할 수 있도록 onMessageReceived() 항상 호출하려면

, 당신은 data message instead of a notification message를 보내야합니다.