54
54
import com .comapi .internal .push .PushManager ;
55
55
import com .google .firebase .messaging .RemoteMessage ;
56
56
57
+ import org .json .JSONException ;
57
58
import org .json .JSONObject ;
58
59
59
60
import java .io .File ;
@@ -414,7 +415,7 @@ public void removeListener(StateListener listener) {
414
415
listenerListAdapter .removeListener (listener );
415
416
}
416
417
417
- protected Observable <PushHandleResult > handlePushNotification (Context activityContext , Intent i , boolean startActivity ) {
418
+ protected Observable <PushHandleResult > handlePush (Context activityContext , Intent i , boolean startActivity ) {
418
419
if (i .hasExtra (PushDataKeys .KEY_PUSH_DEEP_LINK )) {
419
420
JSONObject deepLinkData ;
420
421
try {
@@ -463,30 +464,33 @@ protected Observable<PushHandleResult> handlePushNotification(Context activityCo
463
464
return Observable .fromCallable (() -> new PushHandleResult (null , null , false , false ));
464
465
}
465
466
466
- static protected Observable <PushDetails > parsePush (RemoteMessage message ) {
467
+ /**
468
+ * Parse Firebase Push RemoteNotification to extract deep link url or data send with Dotdigital program
469
+ * @param message RemoteMessage received in a push handler implementing PushMessageListener registered with SDK initialisation call.
470
+ * @return parsed deep link url or data
471
+ */
472
+ static public PushDetails parsePushMessage (RemoteMessage message ) throws JSONException {
467
473
RemoteMessage .Notification n = message .getNotification ();
468
474
if (message .getData ().containsKey (PushDataKeys .KEY_PUSH_DEEP_LINK )) {
469
475
String deepLinkDataJson = message .getData ().get (PushDataKeys .KEY_PUSH_DEEP_LINK );
470
- try {
471
- assert deepLinkDataJson != null ;
476
+ if (deepLinkDataJson != null ) {
472
477
JSONObject deepLinkData = new JSONObject (deepLinkDataJson );
473
478
if (deepLinkData .has (PushDataKeys .KEY_PUSH_URL )) {
474
479
String url = deepLinkData .getString (PushDataKeys .KEY_PUSH_URL );
475
- return Observable . fromCallable (() -> new PushDetails (url , null ) );
480
+ return new PushDetails (url , null );
476
481
}
477
- } catch ( Exception e ) {
478
- return Observable . error ( e );
482
+ } else {
483
+ return new PushDetails ( null , null );
479
484
}
480
485
} else if (message .getData ().containsKey (PushDataKeys .KEY_PUSH_DATA )) {
481
486
String dataJson = message .getData ().get (PushDataKeys .KEY_PUSH_DATA );
482
- try {
483
- assert dataJson != null ;
487
+ if (dataJson != null ) {
484
488
JSONObject data = new JSONObject (dataJson );
485
- return Observable . fromCallable (() -> new PushDetails (null , data ) );
486
- } catch ( Exception e ) {
487
- return Observable . error ( e );
489
+ return new PushDetails (null , data );
490
+ } else {
491
+ return new PushDetails ( null , null );
488
492
}
489
493
}
490
- return Observable . fromCallable (() -> new PushDetails (null , null ) );
494
+ return new PushDetails (null , null );
491
495
}
492
496
}
0 commit comments