Go APNS在第一次写入后关闭连接

Go APNS在第一次写入后关闭连接,go,apple-push-notifications,Go,Apple Push Notifications,在我第一次写入套接字后,APNS将关闭连接!第一个通知发送得非常好,但第二个通知由于EOF而失败 我已经附上了一个发送通知的代码片段。让我知道我是否应该包括更多。谢谢你的帮助 func (notificationService *NotificationService) Send(deviceToken []byte, payload *Payload, expiration time.Time, priority int) (uint32, error) { apnsBinary, e

在我第一次写入套接字后,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
}

如果第一条消息成功传递,而第二条消息失败,则更有可能是由于第二条消息中的问题而关闭了连接。最可能的问题是无效的设备令牌,如果在推送到生产APNS env时使用开发令牌,则可能会发生这种情况,反之亦然


试着只发送第二条消息,看看它是否有效。如果没有,问题肯定出在该消息中。

您确定第一条或第二条消息的格式正确吗?如果不是,接收者可能会关闭我第一次怀疑的连接,但是消息的排列似乎没有什么区别:/I我收回!第一条消息导致EOF!但是它仍然在被传递?…我想你比这里的任何人都更清楚你的信息是否被传递。你说的交付是什么意思?APN读取了您的邮件,并成功地处理了它,您可以在其他地方观察此邮件的效果?是的,我看到通知出现在我的手机上谢谢您的反馈!我发送消息的顺序似乎并不重要。即使发送两次相同的消息也会导致问题。第一条消息肯定是由客户端接收的。我正在沙盒APN中使用dev令牌