2016-10-25 6 views
1

OneSignal bietet Funktionen zum Öffnen von URLs in einem Browser standardmäßig. Ich möchte eine URL mit Benachrichtigungen senden, die die URL in einer WebView öffnen, die ich erstellt habe. Ich habe eine snipper gemeinsam genutzter, wo ich die Benachrichtigung erhalten:OneSignal | URL aus Benachrichtigungsnutzdaten abrufen und in benutzerdefiniertem WebView öffnen

class ExampleNotificationReceivedHandler implements OneSignal.NotificationReceivedHandler { 
     @Override 
     public void notificationReceived(OSNotification notification) { 
     JSONObject data = notification.payload.additionalData; 
     String customKey; 

     if (data != null) { 
      customKey = data.optString("customkey", null); 
      if (customKey != null) 
      Log.i("OneSignalExample", "customkey set with value: " + customKey); 
     } 
     } 
    } 

Ich bin nicht sicher, wie die URL auf dem Push abzurufen geöffnet und öffnen Sie es in den WebView.

+0

Sind Sie die benutzerdefinierte URL durch die OneSignal Armaturenbrett einstellen? – SlashG

+0

targetURL in zusätzliche Daten einschließen? im Dashboard verfügbar –

+0

OneSignal verarbeitet keine zusätzlichen Daten. Es wird "zusätzlich" genannt, weil es für Sie ist, so zu handeln, wie Sie mögen. Eine Antwort schreiben. – SlashG

Antwort

2

Wenn Sie die URL in Ihre Zusätzliche Daten aufnehmen, wird OneSignal nichts tun, um es zu verwenden. Weitere Daten können Sie verwenden, wie Sie möchten. Sie müssen eine OneSignal.NotificationOpenedHandler implementieren und sie auf Ihre OneSignal-Instanz einstellen, wenn Sie OneSignal.startInit(context) anrufen.

Diese Schnittstelle verfügt über einen Rückruf, wenn Ihre Benachrichtigung geöffnet wird, notificationOpened(). Diese Methode hat ein Argument vom Typ OSNotificationOpenResult. Sie können die notification>payload>additionalData abrufen. Holen Sie sich Ihre launch_url von additionalData hier und rufen Sie eine WebView damit.

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

+0

Einrichten in Launch URL öffnet die URL im Browser nicht in der Webansicht. SlashG, also müssen wir die Ziel-URL als zusätzliche Daten festlegen und sie in unserer App aufrufen, um den Benachrichtigungs-Handler zu handhaben, aber dort weiß ich nicht, wie ich genau damit umgehen soll. –

+0

Mein Fehler, ich habe den 'WebView' Teil verpasst. Meine Antwort wurde aktualisiert. Dies sollte helfen. Beachten Sie auch, dass ich das OneSignal SDK 3.3.0 verwende. Wenn Sie eine andere Version haben, kann die Implementierung etwas anders aussehen. – SlashG

+0

Vielen Dank für Ihre Unterstützung und Antwort, aber welches Problem ist, dass ich Beispiele dafür finden konnte, so dass es für mich schwieriger wird, in meinem Code zu implementieren. Ich weiß hier nicht, um den Code so zu setzen, dass ich arbeiten könnte, also werden alle Arbeitsbeispiele geschätzt. –

2

Die Antwort von SlashG, hat mir geholfen. Hier ist meine Implementierung ... Ich habe diesen Code in meiner Anwendungsklasse onCreate()

OneSignal.startInit(this).setNotificationOpenedHandler(new OneSignal.NotificationOpenedHandler() { 
      @Override 
      public void notificationOpened(OSNotificationOpenResult result) { 

       String launchURL = result.notification.payload.launchURL; 

       if (launchURL != null) { 
        Log.d(Const.DEBUG, "Launch URL: " + launchURL); 

        Intent intent = new Intent(getApplicationContext(), WebViewActivity.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); 
        intent.putExtra("url", launchURL); 
        startActivity(intent); 

       } else { 
        Log.d(Const.DEBUG, "Launch URL not found"); 

        Intent intent = new Intent(getApplicationContext(), SplashActivity.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent); 
       } 
      } 
     }).init(); 
+0

Hallo @Vamsi Chalia, kannst du mir bitte sagen, wo hast du diesen Code abgelegt? In welcher Datei in deiner App? – lewis4u

+1

Ich habe den Code in Application-Klasse auf create-Methode –

+0

Tnx Ich habe es gefunden. – lewis4u

Verwandte Themen