client.go
func (c *Client) Notify(interests []string, pushNotification PushNotification) (*NotifyResponse, error) {
	pNRequest := notificationRequest{
		interests,
		&pushNotification,
	}

	err := pNRequest.validate()
	if err != nil {
		return nil, err
	}

	if c.PushNotificationHost == "" {
		return nil, errors.New("PushNotificationHost not provided")
	}

	requestBody, err := json.Marshal(pNRequest)
	if err != nil {
		return nil, err
	}

	path := fmt.Sprintf("/%s/%s/apps/%s/notifications", PushNotifAPIPrefixDefault, PushNotifAPIVersionDefault, c.AppId)

	url, err := createRequestURL("POST", c.PushNotificationHost, path, c.Key, c.Secret, authTimestamp(), c.Secure, requestBody, nil, c.Cluster)
	if err != nil {
		return nil, err
	}

	byteResponse, err := c.request("POST", url, requestBody)
	if err != nil {
		return nil, err
	}

	var response *NotifyResponse
	err = json.Unmarshal(byteResponse, &response)
	if err != nil {
		return nil, err
	}

	return response, err
}
func (c *Client) Notify(interests []string, pushNotification PushNotification) (*NotifyResponse, error) {
	pNRequest := notificationRequest{
		interests,
		&pushNotification,
	}

	err := pNRequest.validate()
	if err != nil {
		return nil, err
	}

	if c.PushNotificationHost == "" {
		return nil, errors.New("PushNotificationHost not provided")
	}

	requestBody, err := json.Marshal(pNRequest)
	if err != nil {
		return nil, err
	}

	path := fmt.Sprintf("/%s/%s/apps/%s/notifications", PushNotifAPIPrefixDefault, PushNotifAPIVersionDefault, c.AppId)

	url, err := createRequestURL("POST", c.PushNotificationHost, path, c.Key, c.Secret, authTimestamp(), c.Secure, requestBody, nil, c.Cluster)
	if err != nil {
		return nil, err
	}

	byteResponse, err := c.request("POST", url, requestBody)
	if err != nil {
		return nil, err
	}

	var response *NotifyResponse
	err = json.Unmarshal(byteResponse, &response)
	if err != nil {
		return nil, err
	}

	return response, err
}
/*
Notify is used to send native push notifications via Apple APNS or Google GCM/FCM systems. Please make sure that
you have provided a Client.PushNotificationHost, please see Pusher docs for details: https://pusher.com/docs/push_notifications
*/