func pushNotificationIos(req RequestGaurunNotification, client *apns.Client) bool { LogError.Debug("START push notification for iOS") for i, token := range req.Tokens { id := req.IDs[i] payload := apns.NewPayload() payload.Alert = req.Message payload.Badge = req.Badge payload.Sound = req.Sound payload.ContentAvailable = req.ContentAvailable pn := apns.NewPushNotification() pn.DeviceToken = token pn.Expiry = uint32(req.Expiry) pn.AddPayload(payload) if len(req.Extend) > 0 { for _, extend := range req.Extend { pn.Set(extend.Key, extend.Value) } } stime := time.Now() resp := client.Send(pn) etime := time.Now() ptime := etime.Sub(stime).Seconds() if resp.Error != nil { atomic.AddInt64(&StatGaurun.Ios.PushError, 1) LogPush(req.IDs[i], StatusFailedPush, token, ptime, req, resp.Error) client.Conn.Close() client.ConnTls.Close() return false } else { LogPush(id, StatusSucceededPush, token, ptime, req, nil) atomic.AddInt64(&StatGaurun.Ios.PushSuccess, 1) } } client = nil LogError.Debug("END push notification for iOS") return true }