Android 앱에 대한 Firebase 알림을 구현하려고합니다.Firebase 알림을 사용하여 동적 링크를 여는 방법은 무엇입니까?
또한 앱에서 동적 링크를 구현했습니다.
그러나 알림을 클릭하면 특정 동적 링크가 열리도록 동적 링크로 알림을 보내는 방법을 알아낼 수 없습니다. 문자 알림을 보내는 옵션 만 볼 수 있습니다.
해결 방법이 있습니까? 아니면 FCM의 제한 사항입니까?
Android 앱에 대한 Firebase 알림을 구현하려고합니다.Firebase 알림을 사용하여 동적 링크를 여는 방법은 무엇입니까?
또한 앱에서 동적 링크를 구현했습니다.
그러나 알림을 클릭하면 특정 동적 링크가 열리도록 동적 링크로 알림을 보내는 방법을 알아낼 수 없습니다. 문자 알림을 보내는 옵션 만 볼 수 있습니다.
해결 방법이 있습니까? 아니면 FCM의 제한 사항입니까?
현재 콘솔에서 지원하지 않는 사용자 지정 데이터를 사용하여 알림을 서버 쪽에서 보내야합니다. (맞춤 키 - 값 쌍을 사용하면 앱이 백그라운드 모드 일 때도 알림이 표시되지 않습니다.) 자세히 알아보기 : https://firebase.google.com/docs/cloud-messaging/server
자신의 응용 프로그램 서버가 있으면 알림의 사용자 지정 데이터 섹션에 딥 링크 URL을 포함시킬 수 있습니다.
FirebaseMessagingService
구현에서는 페이로드를보고 거기에서 URL을 가져와 해당 딥 링크 URL을 사용하는 사용자 지정 의도를 만들어야합니다.
현재이 상황에서 DeepLinkActivity에 대한 링크와 데이터를 설정할 수 있으며 링크 처리를 수행 할 수 있으므로 AirBnb의 딥 링크 디스패처 라이브러리 (https://github.com/airbnb/DeepLinkDispatch)를 사용하고 있습니다. 아래의 예에서 서버의 페이로드를 DeepLinkNotification이라는 개체로 변환합니다. 여기에는 URL 필드가 들어 있습니다.
private void sendDeepLinkNotification(final DeepLinkNotification notification) {
...
Intent mainIntent = new Intent(this, DeepLinkActivity.class);
mainIntent.setAction(Intent.ACTION_VIEW);
mainIntent.setData(Uri.parse(notification.getUrl()));
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntent(mainIntent);
PendingIntent pendingIntent = stackBuilder.getPendingIntent(notificationId, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = buildBasicNotification(notification);
builder.setContentIntent(pendingIntent);
notificationManager.notify(notificationId, builder.build());
}
DeepLinkActivity :
@DeepLinkHandler
public class DeepLinkActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dispatch();
}
private void dispatch() {
DeepLinkResult deepLinkResult = DeepLinkDelegate.dispatchFrom(this);
if (!deepLinkResult.isSuccessful()) {
Timber.i("Deep link unsuccessful: %s", deepLinkResult.error());
//do something here to handle links you don't know what to do with
}
finish();
}
}
이 구현함으로써, 당신은 또한 당신이 그냥 URL로 Intent.ACTION_VIEW
에 의도를 설정 한 경우에 비해 처리하지 못할 어떤 링크를 열 수 없습니다.
감사합니다. 우리 회사에서 이와 같이 정확하게 사용하고 있습니다. – PedroAGSantos