2017-02-20 37 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> 
    /* 
    } 
} 
相關問題