code: func (a *APS) Map() map[string]interface{} {
  	aps := make(map[string]interface{}, 5)
  
  	if !a.Alert.isZero() {
  		if a.Alert.isSimple() {
  			aps["alert"] = a.Alert.Body
  		} else {
  			aps["alert"] = a.Alert
  		}
  	}
  	if n, ok := a.Badge.Number(); ok {
  		aps["badge"] = n
  	}
  	if a.Sound != "" {
  		aps["sound"] = a.Sound
  	}
  	if a.ContentAvailable {
  		aps["content-available"] = 1
  	}
  	if a.Category != "" {
  		aps["category"] = a.Category
  	}
  	if a.MutableContent {
  		aps["mutable-content"] = 1
  	}
  	if a.ThreadID != "" {
  		aps["thread-id"] = a.ThreadID
  	}
  
  	// wrap in "aps" to form the final payload
  	return map[string]interface{}{"aps": aps}
  }
docs: // Map returns the payload as a map that you can customize
  // before serializing it to JSON.