2017-02-20 46 views
0

我正在从oneignal接收来自服务发送的actionButton的通知。我如何处理这些按钮并处理他们的事件?如何使用现有的动作按钮

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 
    } 

如何处理从一个信号接收到的actionButton事件?他们似乎,但是当我点击他们时,他们的行为就像我点击通知一样...

回答

0

OneSignal的Android SDK为收到的通知提供处理程序。你应该为你的按钮设置ID来区分一个。您还可以在data密钥下发送其他数据(例如url访问或其他元数据)作为散列。从他们的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> 
    /* 
    } 
}