2017-02-20 5 views
0

Ich erhalte Benachrichtigungen von onesignal mit actionButtons, die vom Dienst gesendet werden. Wie kann ich mit diesen Schaltflächen umgehen und ihre Ereignisse behandeln?So arbeiten Sie mit einer vorhandenen Aktion Schaltflächen

protected boolean onNotificationProcessing(final OSNotificationReceivedResult receivedResult) { 
      OverrideSettings overrideSettings = new OverrideSettings(); 

      // here I am getting the data sent thtough oneSignal 
      final JSONObject additionalData = receivedResult.payload.additionalData; 

      // here I am getting my buttons 
      final List<OSNotificationPayload.ActionButton> actionButtons = receivedResult.payload.actionButtons; 

      overrideSettings.extender = new NotificationCompat.Extender() { 
      @Override 
      public NotificationCompat.Builder extend(NotificationCompat.Builder builder) { 
      try { 

      // Here I am creating my own button and adding it to the notification 

      Intent intent = new Intent(Intent.ACTION_DIAL); 
      intent.setData(Uri.parse("tel:" + phoneNumber)); 
      PendingIntent pendingIntentCall = PendingIntent.getActivity(MyService.this, 12345, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
      builder.addAction(R.drawable.phone_notif,getString(R.string.call),pendingIntentCall); 
      } catch (Exception e) { 
      } 
      return builder; 
     } 
     }; 
    return true 
    } 

Wie kann ich Ereignis für die actionButtons handhaben, die von einem Signal empfangen werden? Sie erscheinen, aber wenn ich auf sie klicke, verhalten sie sich so, als würde ich auf eine Benachrichtigung klicken ...

Antwort

0

OneSignals Android SDK bietet Handler für empfangene Benachrichtigungen. Sie sollten IDs für Ihre Schaltflächen festlegen, um sie voneinander zu unterscheiden. Sie können auch zusätzliche Daten (z. B. URL zum Besuch oder einige andere Metadaten) als Hash unter data Schlüssel senden. Aus ihrer documentation:

class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler { 
    // This fires when a notification is opened by tapping on it. 
    @Override 
    public void notificationOpened(OSNotificationOpenResult result) { 
    OSNotificationAction.ActionType actionType = result.action.type; 
    JSONObject data = result.notification.payload.additionalData; 
    String customKey; 

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

    if (actionType == OSNotificationAction.ActionType.ActionTaken) 
     Log.i("OneSignalExample", "Button pressed with id: " + result.action.actionID); 

    // The following can be used to open an Activity of your choice. 
    // Replace - getApplicationContext() - with any Android Context. 
    // Intent intent = new Intent(getApplicationContext(), YourActivity.class); 
    // intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); 
    // startActivity(intent); 

    // Add the following to your AndroidManifest.xml to prevent the launching of your main Activity 
    // if you are calling startActivity above. 
    /* 
     <application ...> 
      <meta-data android:name="com.onesignal.NotificationOpened.DEFAULT" android:value="DISABLE" /> 
     </application> 
    /* 
    } 
} 
Verwandte Themen