diff --git a/push_notifications.module b/push_notifications.module
index b5e132c..117418f 100644
--- a/push_notifications.module
+++ b/push_notifications.module
@@ -465,7 +465,7 @@ function push_notifications_check_payload_size($payload = '') {
  * @return mixed Flag to indicate if delivery was successful.
  */
 function push_notifications_send_message($recipients, $message) {
-  if (!is_array($recipients) || !is_string($message)) {
+  if (!is_array($recipients)) {
     return FALSE;
   }
 
@@ -479,7 +479,15 @@ function push_notifications_send_message($recipients, $message) {
   $message = truncate_utf8($message, PUSH_NOTIFICATIONS_APNS_PAYLOAD_SIZE_LIMIT, TRUE, TRUE);
 
   // Convert the payload into the correct format for delivery.
-  $payload = array('alert' => $message);
+  //$payload = array('alert' => $message);
+  if (is_array($message)) {
+    $payload = $message;
+    $message = $payload['alert'];
+  }
+  elseif (is_string($message)) {
+    // Convert the payload into the correct format for delivery.
+    $payload = array('alert' => $message);
+  }
 
   // Determine if any of the recipients have one or multiple tokens stored.
   $tokens = array();
