在我第一次写入套接字后,APNS关闭连接!第一个通知发送完全正常,但第二个通知因EOF而失败。
我附上了一小段代码,用于发送通知。如果我应该加入更多,请告诉我。谢谢你的帮助!
func (notificationService *NotificationService) Send(deviceToken []byte, payload *Payload, expiration time.Time, priority int) (uint32, error) {
apnsBinary, err := createApnsBinary(deviceToken, payload, notificationIdentifier, expiration, priority)
if err != nil {
return 0, err
}
_, err = notificationService.connection.Write(apnsBinary)
if err != nil {
return 0, err
}
responseBytes := make([]byte, 6, 6)
bytesRead, err := notificationService.connection.Read(responseBytes)
if err != nil && err != io.EOF {
return 0, err
} else if bytesRead > 0 {
errorResponseInHex := hex.EncodeToString(responseBytes[:bytesRead])
return 0, fmt.Errorf("Received bad response %s", errorResponseInHex)
}
if err == io.EOF {
fmt.Println("BOO NOT AGAIN!!")
}
return notificationIdentifier, nil
}
答案 0 :(得分:0)
如果第一条消息成功传递而第二条消息失败,则由于第二条消息中的问题,更有可能关闭连接。最可能的问题是无效的设备令牌(如果您在推送到生产APNS环境时使用开发令牌,可能会发生这种情况,反之亦然)。
尝试仅发送第二条消息,看看它是否有效。如果没有,问题肯定在那条消息中。