Add apn-topic & token-type set by the client

This commit is contained in:
Andrea Maria Piana 2020-07-30 10:24:30 +02:00
parent 60e61caad8
commit 91074ac95e
No known key found for this signature in database
GPG Key ID: AA6CCA6DE0E06424
7 changed files with 93 additions and 78 deletions

View File

@ -267,8 +267,6 @@ func NewMessenger(
// Overriding until we handle different identities // Overriding until we handle different identities
pushNotificationClientConfig.Identity = identity pushNotificationClientConfig.Identity = identity
// Hardcoding this for now, as it's the only one we support
pushNotificationClientConfig.TokenType = protobuf.PushNotificationRegistration_APN_TOKEN
pushNotificationClientConfig.Logger = logger pushNotificationClientConfig.Logger = logger
pushNotificationClientConfig.InstallationID = installationID pushNotificationClientConfig.InstallationID = installationID
@ -3146,7 +3144,7 @@ func (m *Messenger) addedContactsAndMutedChatIDs() ([]*ecdsa.PublicKey, []string
} }
// RegisterForPushNotification register deviceToken with any push notification server enabled // RegisterForPushNotification register deviceToken with any push notification server enabled
func (m *Messenger) RegisterForPushNotifications(ctx context.Context, deviceToken string) error { func (m *Messenger) RegisterForPushNotifications(ctx context.Context, deviceToken, apnTopic string, tokenType protobuf.PushNotificationRegistration_TokenType) error {
if m.pushNotificationClient == nil { if m.pushNotificationClient == nil {
return errors.New("push notification client not enabled") return errors.New("push notification client not enabled")
} }
@ -3154,7 +3152,7 @@ func (m *Messenger) RegisterForPushNotifications(ctx context.Context, deviceToke
defer m.mutex.Unlock() defer m.mutex.Unlock()
contactIDs, mutedChatIDs := m.addedContactsAndMutedChatIDs() contactIDs, mutedChatIDs := m.addedContactsAndMutedChatIDs()
return m.pushNotificationClient.Register(deviceToken, contactIDs, mutedChatIDs) return m.pushNotificationClient.Register(deviceToken, apnTopic, tokenType, contactIDs, mutedChatIDs)
} }
// RegisteredForPushNotifications returns whether we successfully registered with all the servers // RegisteredForPushNotifications returns whether we successfully registered with all the servers

View File

@ -125,6 +125,7 @@ type PushNotificationRegistration struct {
Unregister bool `protobuf:"varint,9,opt,name=unregister,proto3" json:"unregister,omitempty"` Unregister bool `protobuf:"varint,9,opt,name=unregister,proto3" json:"unregister,omitempty"`
Grant []byte `protobuf:"bytes,10,opt,name=grant,proto3" json:"grant,omitempty"` Grant []byte `protobuf:"bytes,10,opt,name=grant,proto3" json:"grant,omitempty"`
AllowFromContactsOnly bool `protobuf:"varint,11,opt,name=allow_from_contacts_only,json=allowFromContactsOnly,proto3" json:"allow_from_contacts_only,omitempty"` AllowFromContactsOnly bool `protobuf:"varint,11,opt,name=allow_from_contacts_only,json=allowFromContactsOnly,proto3" json:"allow_from_contacts_only,omitempty"`
ApnTopic string `protobuf:"bytes,12,opt,name=apn_topic,json=apnTopic,proto3" json:"apn_topic,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -232,6 +233,13 @@ func (m *PushNotificationRegistration) GetAllowFromContactsOnly() bool {
return false return false
} }
func (m *PushNotificationRegistration) GetApnTopic() string {
if m != nil {
return m.ApnTopic
}
return ""
}
type PushNotificationRegistrationResponse struct { type PushNotificationRegistrationResponse struct {
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"` Error PushNotificationRegistrationResponse_ErrorType `protobuf:"varint,2,opt,name=error,proto3,enum=protobuf.PushNotificationRegistrationResponse_ErrorType" json:"error,omitempty"`
@ -754,60 +762,61 @@ func init() {
func init() { proto.RegisterFile("push_notifications.proto", fileDescriptor_200acd86044eaa5d) } func init() { proto.RegisterFile("push_notifications.proto", fileDescriptor_200acd86044eaa5d) }
var fileDescriptor_200acd86044eaa5d = []byte{ var fileDescriptor_200acd86044eaa5d = []byte{
// 878 bytes of a gzipped FileDescriptorProto // 896 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x41, 0x6f, 0xeb, 0x44, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x6f, 0xe3, 0x44,
0x17, 0xfd, 0x9c, 0xa4, 0x4d, 0x72, 0x93, 0x2f, 0x4d, 0x47, 0x6d, 0x9f, 0x79, 0xa2, 0x10, 0x0c, 0x14, 0xc7, 0x49, 0xba, 0x49, 0x5e, 0x42, 0x9a, 0x8e, 0xda, 0xae, 0x59, 0x28, 0x04, 0x83, 0x44,
0x12, 0x51, 0x17, 0x11, 0x2a, 0x12, 0xef, 0x89, 0x15, 0xa1, 0x75, 0x8b, 0xd5, 0xc6, 0x0e, 0x13, 0xd4, 0x43, 0x84, 0x8a, 0xc4, 0xae, 0x38, 0x11, 0x5a, 0xb7, 0x44, 0x6d, 0xec, 0x30, 0x71, 0x59,
0x97, 0xa7, 0x27, 0x21, 0x59, 0x8e, 0x3d, 0x69, 0xad, 0xba, 0x1e, 0x33, 0x33, 0x2e, 0xca, 0x8e, 0xad, 0x84, 0x34, 0x72, 0xec, 0x49, 0x6b, 0xd5, 0xf5, 0x98, 0x99, 0x49, 0x51, 0x6e, 0x7c, 0x00,
0x1f, 0xc0, 0x86, 0x2d, 0x1b, 0xfe, 0x02, 0xe2, 0x17, 0x22, 0x8f, 0xed, 0xe0, 0x36, 0x6e, 0x5a, 0x2e, 0x5c, 0xf9, 0x14, 0x88, 0x33, 0x1f, 0x0e, 0x79, 0x6c, 0x07, 0xb7, 0x71, 0xd3, 0x22, 0x71,
0x24, 0x56, 0xf6, 0x9c, 0xb9, 0xf7, 0xce, 0xcc, 0x39, 0xf7, 0x5c, 0x50, 0xe3, 0x84, 0xdf, 0x38, 0xb2, 0xdf, 0x6f, 0xde, 0x9f, 0x99, 0xdf, 0x7b, 0xbf, 0x07, 0x7a, 0xbc, 0x10, 0xd7, 0x24, 0x62,
0x11, 0x15, 0xc1, 0x22, 0xf0, 0x5c, 0x11, 0xd0, 0x88, 0x8f, 0x62, 0x46, 0x05, 0x45, 0x2d, 0xf9, 0x32, 0x98, 0x07, 0x9e, 0x2b, 0x03, 0x16, 0x89, 0x41, 0xcc, 0x99, 0x64, 0xa8, 0xa1, 0x3e, 0xb3,
0x99, 0x27, 0x0b, 0xed, 0x8f, 0x06, 0x7c, 0x38, 0x4d, 0xf8, 0x8d, 0x59, 0x8a, 0xc2, 0xe4, 0x3a, 0xc5, 0xdc, 0xf8, 0xbb, 0x06, 0x1f, 0x4d, 0x16, 0xe2, 0xda, 0x2a, 0x78, 0x61, 0x7a, 0x15, 0x08,
0xe0, 0x82, 0xc9, 0x7f, 0x64, 0x01, 0x08, 0x7a, 0x4b, 0x22, 0x47, 0x2c, 0x63, 0xa2, 0x2a, 0x03, 0xc9, 0xd5, 0x3f, 0xb2, 0x01, 0x24, 0xbb, 0xa1, 0x11, 0x91, 0xcb, 0x98, 0xea, 0x5a, 0x4f, 0xeb,
0x65, 0xd8, 0x3b, 0xfe, 0x62, 0x54, 0xe4, 0x8f, 0x36, 0xe5, 0x8e, 0xec, 0x34, 0xd1, 0x5e, 0xc6, 0x77, 0x8e, 0xbe, 0x1c, 0xe4, 0xf1, 0x83, 0x4d, 0xb1, 0x03, 0x27, 0x09, 0x74, 0x96, 0x31, 0xc5,
0x04, 0xb7, 0x45, 0xf1, 0x8b, 0x3e, 0x81, 0xae, 0x4f, 0xee, 0x03, 0x8f, 0x38, 0x12, 0x53, 0x6b, 0x4d, 0x99, 0xff, 0xa2, 0x4f, 0xa1, 0xed, 0xd3, 0xbb, 0xc0, 0xa3, 0x44, 0x61, 0x7a, 0xa5, 0xa7,
0x03, 0x65, 0xd8, 0xc6, 0x9d, 0x0c, 0x93, 0x19, 0xe8, 0x73, 0xd8, 0x09, 0x22, 0x2e, 0xdc, 0x30, 0xf5, 0x9b, 0xb8, 0x95, 0x62, 0x2a, 0x02, 0x7d, 0x01, 0xdb, 0x41, 0x24, 0xa4, 0x1b, 0x86, 0x2a,
0x94, 0x75, 0x9c, 0xc0, 0x57, 0xeb, 0x32, 0xaa, 0x57, 0x86, 0x0d, 0x3f, 0xad, 0xe5, 0x7a, 0x1e, 0x0f, 0x09, 0x7c, 0xbd, 0xaa, 0xbc, 0x3a, 0x45, 0x78, 0xe4, 0x27, 0xb9, 0x5c, 0xcf, 0xa3, 0x42,
0xe1, 0x3c, 0xaf, 0xd5, 0xc8, 0x6a, 0x65, 0x58, 0x56, 0x4b, 0x85, 0x26, 0x89, 0xdc, 0x79, 0x48, 0x64, 0xb9, 0x6a, 0x69, 0xae, 0x14, 0x4b, 0x73, 0xe9, 0x50, 0xa7, 0x91, 0x3b, 0x0b, 0xa9, 0xaf,
0x7c, 0x75, 0x6b, 0xa0, 0x0c, 0x5b, 0xb8, 0x58, 0xa6, 0x3b, 0xf7, 0x84, 0xf1, 0x80, 0x46, 0xea, 0x6f, 0xf5, 0xb4, 0x7e, 0x03, 0xe7, 0x66, 0x72, 0x72, 0x47, 0xb9, 0x08, 0x58, 0xa4, 0xbf, 0xe8,
0xf6, 0x40, 0x19, 0x36, 0x70, 0xb1, 0x44, 0x43, 0xe8, 0xbb, 0x61, 0x48, 0x7f, 0x26, 0xbe, 0x73, 0x69, 0xfd, 0x1a, 0xce, 0x4d, 0xd4, 0x87, 0xae, 0x1b, 0x86, 0xec, 0x17, 0xea, 0x93, 0x1b, 0xba,
0x4b, 0x96, 0x4e, 0x18, 0x70, 0xa1, 0x36, 0x07, 0xf5, 0x61, 0x17, 0xf7, 0x72, 0xfc, 0x82, 0x2c, 0x24, 0x61, 0x20, 0xa4, 0x5e, 0xef, 0x55, 0xfb, 0x6d, 0xdc, 0xc9, 0xf0, 0x73, 0xba, 0xbc, 0x08,
0x2f, 0x03, 0x2e, 0xd0, 0x11, 0xec, 0xce, 0x43, 0xea, 0xdd, 0x12, 0xdf, 0xf1, 0x6e, 0x5c, 0x91, 0x84, 0x44, 0x87, 0xb0, 0x33, 0x0b, 0x99, 0x77, 0x43, 0x7d, 0xe2, 0x5d, 0xbb, 0x32, 0x75, 0x6d,
0x85, 0xb6, 0x64, 0xe8, 0x4e, 0xbe, 0x71, 0x72, 0xe3, 0x0a, 0x19, 0xfb, 0x11, 0x40, 0x12, 0x31, 0x28, 0xd7, 0xed, 0xec, 0xe0, 0xf8, 0xda, 0x95, 0xca, 0xf7, 0x63, 0x80, 0x45, 0xc4, 0x15, 0x3f,
0xc9, 0x0f, 0x61, 0x6a, 0x5b, 0x5e, 0xa6, 0x84, 0xa0, 0x3d, 0xd8, 0xba, 0x66, 0x6e, 0x24, 0x54, 0x94, 0xeb, 0x4d, 0x75, 0x99, 0x02, 0x82, 0x76, 0x61, 0xeb, 0x8a, 0xbb, 0x91, 0xd4, 0xa1, 0xa7,
0x18, 0x28, 0xc3, 0x2e, 0xce, 0x16, 0xe8, 0x0d, 0xa8, 0xf2, 0x4c, 0x67, 0xc1, 0xe8, 0x9d, 0xe3, 0xf5, 0xdb, 0x38, 0x35, 0xd0, 0x6b, 0xd0, 0x55, 0x4d, 0x32, 0xe7, 0xec, 0x96, 0x78, 0x2c, 0x92,
0xd1, 0x48, 0xb8, 0x9e, 0xe0, 0x0e, 0x8d, 0xc2, 0xa5, 0xda, 0x91, 0x35, 0xf6, 0xe5, 0xfe, 0x19, 0xae, 0x27, 0x05, 0x61, 0x51, 0xb8, 0xd4, 0x5b, 0x2a, 0xc7, 0x9e, 0x3a, 0x3f, 0xe5, 0xec, 0xf6,
0xa3, 0x77, 0x27, 0xf9, 0xae, 0x15, 0x85, 0x4b, 0xed, 0x0c, 0xda, 0x2b, 0xfe, 0xd1, 0x01, 0xa0, 0x38, 0x3b, 0xb5, 0xa3, 0x70, 0x89, 0x3e, 0x84, 0xa6, 0x1b, 0x47, 0x44, 0xb2, 0x38, 0xf0, 0xf4,
0x2b, 0xf3, 0xc2, 0xb4, 0xde, 0x99, 0x8e, 0x6d, 0x5d, 0xe8, 0xa6, 0x63, 0xbf, 0x9f, 0xea, 0xfd, 0xb6, 0x22, 0xa6, 0xe1, 0xc6, 0x91, 0x93, 0xd8, 0xc6, 0x29, 0x34, 0x57, 0xcd, 0x41, 0xfb, 0x80,
0xff, 0xa1, 0xff, 0x43, 0x7b, 0x3c, 0xcd, 0xb1, 0xbe, 0x82, 0x10, 0xf4, 0xce, 0x0c, 0xac, 0x7f, 0x2e, 0xad, 0x73, 0xcb, 0x7e, 0x6b, 0x11, 0xc7, 0x3e, 0x37, 0x2d, 0xe2, 0xbc, 0x9b, 0x98, 0xdd,
0x3b, 0x9e, 0xe9, 0x39, 0x56, 0xd3, 0xfe, 0xaa, 0xc1, 0x67, 0x9b, 0x54, 0xc6, 0x84, 0xc7, 0x34, 0xf7, 0xd0, 0xfb, 0xd0, 0x1c, 0x4e, 0x32, 0xac, 0xab, 0x21, 0x04, 0x9d, 0xd3, 0x11, 0x36, 0xbf,
0xe2, 0x24, 0xe5, 0x93, 0x27, 0x92, 0x79, 0xd9, 0x26, 0x2d, 0x5c, 0x2c, 0x91, 0x09, 0x5b, 0x84, 0x1b, 0x4e, 0xcd, 0x0c, 0xab, 0x18, 0x7f, 0x55, 0xe0, 0xf3, 0x4d, 0x23, 0x80, 0xa9, 0x88, 0x59,
0x31, 0xca, 0xa4, 0xd6, 0xbd, 0xe3, 0xb7, 0x2f, 0x6b, 0x9f, 0xa2, 0xf0, 0x48, 0x4f, 0x73, 0x65, 0x24, 0x68, 0x42, 0xb6, 0x58, 0xa8, 0xb6, 0xa8, 0x19, 0x6a, 0xe0, 0xdc, 0x44, 0x16, 0x6c, 0x51,
0x1b, 0x65, 0x65, 0xd0, 0x21, 0x00, 0x23, 0x3f, 0x25, 0x84, 0x8b, 0xa2, 0x35, 0xba, 0xb8, 0x9d, 0xce, 0x19, 0x57, 0x83, 0xd0, 0x39, 0x7a, 0xf3, 0xbc, 0xd9, 0xca, 0x13, 0x0f, 0xcc, 0x24, 0x56,
0x23, 0x86, 0xaf, 0xfd, 0xa2, 0x40, 0x7b, 0x95, 0x53, 0x7e, 0xba, 0x8e, 0xb1, 0x85, 0x8b, 0xa7, 0xcd, 0x58, 0x9a, 0x06, 0x1d, 0x00, 0x70, 0xfa, 0xf3, 0x82, 0x0a, 0x99, 0xcf, 0x4d, 0x1b, 0x37,
0xef, 0xc3, 0xee, 0x64, 0x7c, 0x79, 0x66, 0xe1, 0x89, 0x7e, 0xea, 0x4c, 0xf4, 0xd9, 0x6c, 0x7c, 0x33, 0x64, 0xe4, 0x1b, 0xbf, 0x6a, 0xd0, 0x5c, 0xc5, 0x14, 0x9f, 0x6e, 0x62, 0x6c, 0xe3, 0xfc,
0xae, 0xf7, 0x15, 0xb4, 0x07, 0xfd, 0x1f, 0x74, 0x3c, 0x33, 0x2c, 0xd3, 0x99, 0x18, 0xb3, 0xc9, 0xe9, 0x7b, 0xb0, 0x33, 0x1e, 0x5e, 0x9c, 0xda, 0x78, 0x6c, 0x9e, 0x90, 0xb1, 0x39, 0x9d, 0x0e,
0xd8, 0x3e, 0xf9, 0xae, 0x5f, 0x43, 0xaf, 0xe1, 0xe0, 0xca, 0x9c, 0x5d, 0x4d, 0xa7, 0x16, 0xb6, 0xcf, 0xcc, 0xae, 0x86, 0x76, 0xa1, 0xfb, 0xa3, 0x89, 0xa7, 0x23, 0xdb, 0x22, 0xe3, 0xd1, 0x74,
0xf5, 0xd3, 0x32, 0x87, 0xf5, 0x94, 0x34, 0xc3, 0xb4, 0x75, 0x6c, 0x8e, 0x2f, 0xb3, 0x13, 0xfa, 0x3c, 0x74, 0x8e, 0xbf, 0xef, 0x56, 0xd0, 0x2b, 0xd8, 0xbf, 0xb4, 0xa6, 0x97, 0x93, 0x89, 0x8d,
0x0d, 0x2d, 0x01, 0x35, 0x17, 0xe3, 0x84, 0xfa, 0x64, 0xec, 0xdf, 0x13, 0x26, 0x02, 0x4e, 0xee, 0x1d, 0xf3, 0xa4, 0xc8, 0x61, 0x35, 0x21, 0x6d, 0x64, 0x39, 0x26, 0xb6, 0x86, 0x17, 0x69, 0x85,
0x48, 0x24, 0xd0, 0x7b, 0x38, 0x58, 0x33, 0xa6, 0x13, 0x44, 0x0b, 0xaa, 0x2a, 0x83, 0xfa, 0xb0, 0x6e, 0xcd, 0x58, 0x80, 0x9e, 0x75, 0xea, 0x98, 0xf9, 0x74, 0xe8, 0xdf, 0x51, 0x2e, 0x03, 0x41,
0x73, 0xfc, 0xe9, 0xd3, 0xf4, 0x7c, 0x9f, 0x10, 0xb6, 0x34, 0xa2, 0x05, 0xc5, 0x7b, 0xf1, 0xa3, 0x6f, 0x69, 0x24, 0xd1, 0x3b, 0xd8, 0x5f, 0x53, 0x2d, 0x09, 0xa2, 0x39, 0xd3, 0xb5, 0x5e, 0xb5,
0xad, 0x14, 0xd5, 0xde, 0xc2, 0x7e, 0x65, 0x0a, 0xfa, 0x18, 0x3a, 0x71, 0x32, 0x0f, 0x03, 0x2f, 0xdf, 0x3a, 0xfa, 0xec, 0x71, 0x7a, 0x7e, 0x58, 0x50, 0xbe, 0x1c, 0x45, 0x73, 0x86, 0x77, 0xe3,
0x6d, 0x68, 0x2e, 0x0f, 0xea, 0x62, 0xc8, 0xa0, 0x0b, 0xb2, 0xe4, 0xda, 0xaf, 0x35, 0xf8, 0xe0, 0x07, 0x47, 0x09, 0x6a, 0xbc, 0x81, 0xbd, 0xd2, 0x10, 0xf4, 0x09, 0xb4, 0xe2, 0xc5, 0x2c, 0x0c,
0xc9, 0xd3, 0xd6, 0x7c, 0xa6, 0xac, 0xfb, 0xac, 0xc2, 0xb3, 0xb5, 0x4a, 0xcf, 0x1e, 0x02, 0xfc, 0xbc, 0x64, 0xda, 0x85, 0x2a, 0xd4, 0xc6, 0x90, 0x42, 0xe7, 0x74, 0x29, 0x8c, 0xdf, 0x2a, 0xf0,
0x73, 0x95, 0x42, 0xbc, 0xd5, 0x4d, 0x2a, 0xbd, 0xd7, 0xa8, 0xf4, 0xde, 0xca, 0x2f, 0x5b, 0x65, 0xc1, 0xa3, 0xd5, 0xd6, 0x44, 0xa8, 0xad, 0x8b, 0xb0, 0x44, 0xd0, 0x95, 0x52, 0x41, 0x1f, 0x00,
0xbf, 0x3c, 0xed, 0xea, 0x23, 0xd8, 0xe5, 0x84, 0xdd, 0x13, 0xe6, 0x94, 0xce, 0x6f, 0xca, 0xdc, 0xfc, 0x7b, 0x95, 0xbc, 0x79, 0xab, 0x9b, 0x94, 0x0a, 0xb3, 0x56, 0x2a, 0xcc, 0x95, 0x98, 0xb6,
0x9d, 0x6c, 0x63, 0x5a, 0xdc, 0x42, 0xfb, 0x4d, 0x81, 0xc3, 0x4a, 0x3a, 0x56, 0xdd, 0xfe, 0x06, 0x8a, 0x62, 0x7a, 0x5c, 0xf2, 0x87, 0xb0, 0x23, 0x28, 0xbf, 0xa3, 0x9c, 0x14, 0xea, 0xd7, 0x55,
0x1a, 0xff, 0x56, 0x33, 0x99, 0x90, 0xbe, 0xff, 0x8e, 0x70, 0xee, 0x5e, 0x93, 0x82, 0xa3, 0x2e, 0xec, 0x76, 0x7a, 0x30, 0xc9, 0x6f, 0x61, 0xfc, 0xae, 0xc1, 0x41, 0x29, 0x1d, 0xab, 0x69, 0x7f,
0x6e, 0xe7, 0x88, 0xe1, 0x97, 0x5d, 0x54, 0x7f, 0xe0, 0x22, 0xed, 0x4f, 0x05, 0xfa, 0x8f, 0x8b, 0x0d, 0xb5, 0xff, 0xda, 0x33, 0x15, 0x90, 0xbc, 0xff, 0x96, 0x0a, 0xe1, 0x5e, 0xd1, 0x9c, 0xa3,
0xbf, 0x44, 0x99, 0x57, 0xd0, 0x94, 0xb3, 0x69, 0xa5, 0xc8, 0x76, 0xba, 0x7c, 0x5e, 0x89, 0x0a, 0x36, 0x6e, 0x66, 0xc8, 0xc8, 0x2f, 0xaa, 0xa8, 0x7a, 0x4f, 0x45, 0xc6, 0x9f, 0x1a, 0x74, 0x1f,
0x45, 0x1b, 0x95, 0x8a, 0xaa, 0xd0, 0xcc, 0xef, 0x9f, 0x4b, 0x51, 0x2c, 0xb5, 0x18, 0x5e, 0xad, 0x26, 0x7f, 0x4e, 0x67, 0x5e, 0x42, 0x5d, 0x2d, 0xae, 0x55, 0x47, 0x5e, 0x24, 0xe6, 0xd3, 0x9d,
0x3b, 0x5c, 0xda, 0x14, 0x7d, 0x05, 0xad, 0xdc, 0xb1, 0x3c, 0xe7, 0xf0, 0xf5, 0x86, 0xb1, 0xb0, 0x28, 0xe9, 0x68, 0xad, 0xb4, 0xa3, 0x3a, 0xd4, 0xb3, 0xfb, 0x67, 0xad, 0xc8, 0x4d, 0x23, 0x86,
0x8a, 0x7d, 0x86, 0x3e, 0xed, 0xf7, 0x1a, 0x1c, 0xac, 0x1f, 0x19, 0x53, 0x26, 0x36, 0xcc, 0xa7, 0x97, 0xeb, 0x0a, 0x57, 0x32, 0x45, 0x5f, 0x43, 0x23, 0x53, 0xac, 0xc8, 0x38, 0x7c, 0xb5, 0x61,
0x6f, 0x1e, 0xce, 0xa7, 0xa3, 0x4d, 0xf3, 0x29, 0x2d, 0x55, 0x39, 0x91, 0xfe, 0x0b, 0x2a, 0xb5, 0x2d, 0xac, 0x7c, 0x9f, 0xa0, 0xcf, 0xf8, 0xa3, 0x02, 0xfb, 0xeb, 0x25, 0x63, 0xc6, 0xe5, 0x86,
0x1f, 0x5f, 0x32, 0xb9, 0x76, 0xa0, 0xf3, 0x0e, 0x5b, 0xe6, 0x79, 0x79, 0x6c, 0x3f, 0x9a, 0x40, 0xfd, 0xf4, 0xed, 0xfd, 0xfd, 0x74, 0xb8, 0x69, 0x3f, 0x25, 0xa9, 0x4a, 0x37, 0xd2, 0xff, 0x41,
0xb5, 0x14, 0x33, 0x2d, 0xdb, 0xc1, 0xfa, 0xb9, 0x31, 0xb3, 0x75, 0xac, 0x9f, 0xf6, 0xeb, 0xe9, 0xa5, 0xf1, 0xd3, 0x73, 0x36, 0xd7, 0x36, 0xb4, 0xde, 0x62, 0xdb, 0x3a, 0x2b, 0xae, 0xed, 0x07,
0x54, 0x5a, 0x7f, 0x50, 0xde, 0xcf, 0x0f, 0x79, 0x55, 0x1e, 0xb7, 0xe5, 0xd7, 0xd0, 0x64, 0xf2, 0x1b, 0xa8, 0x92, 0x60, 0x96, 0xed, 0x10, 0x6c, 0x9e, 0x8d, 0xa6, 0x8e, 0x89, 0xcd, 0x93, 0x6e,
0xed, 0x5c, 0xad, 0x49, 0xb5, 0x06, 0xcf, 0x91, 0x84, 0x8b, 0x84, 0xf9, 0xb6, 0x8c, 0xfc, 0xf2, 0x35, 0xd9, 0x4a, 0xeb, 0x0f, 0xca, 0xe6, 0xf9, 0x3e, 0xaf, 0xda, 0xc3, 0xb1, 0xfc, 0x06, 0xea,
0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xe8, 0xb9, 0x16, 0x90, 0x08, 0x00, 0x00, 0x5c, 0xbd, 0x5d, 0xe8, 0x15, 0xd5, 0xad, 0xde, 0x53, 0x24, 0xe1, 0x3c, 0x60, 0xf6, 0x42, 0x79,
0x7e, 0xf5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0x01, 0xff, 0x30, 0xad, 0x08, 0x00, 0x00,
} }

View File

@ -19,6 +19,7 @@ message PushNotificationRegistration {
bool unregister = 9; bool unregister = 9;
bytes grant = 10; bytes grant = 10;
bool allow_from_contacts_only = 11; bool allow_from_contacts_only = 11;
string apn_topic = 12;
} }
message PushNotificationRegistrationResponse { message PushNotificationRegistrationResponse {

View File

@ -17,6 +17,7 @@ import (
"github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/crypto"
"github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/eth-node/types"
"github.com/status-im/status-go/protocol/common" "github.com/status-im/status-go/protocol/common"
"github.com/status-im/status-go/protocol/protobuf"
"github.com/status-im/status-go/protocol/pushnotificationclient" "github.com/status-im/status-go/protocol/pushnotificationclient"
"github.com/status-im/status-go/protocol/pushnotificationserver" "github.com/status-im/status-go/protocol/pushnotificationserver"
"github.com/status-im/status-go/protocol/tt" "github.com/status-im/status-go/protocol/tt"
@ -26,6 +27,7 @@ import (
const ( const (
bob1DeviceToken = "token-1" bob1DeviceToken = "token-1"
bob2DeviceToken = "token-2" bob2DeviceToken = "token-2"
testAPNTopic = "topic"
) )
func TestMessengerPushNotificationSuite(t *testing.T) { func TestMessengerPushNotificationSuite(t *testing.T) {
@ -139,7 +141,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotification() {
err = bob1.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey) err = bob1.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey)
s.Require().NoError(err) s.Require().NoError(err)
err = bob1.RegisterForPushNotifications(context.Background(), bob1DeviceToken) err = bob1.RegisterForPushNotifications(context.Background(), bob1DeviceToken, testAPNTopic, protobuf.PushNotificationRegistration_APN_TOKEN)
// Pull servers and check we registered // Pull servers and check we registered
err = tt.RetryWithBackOff(func() error { err = tt.RetryWithBackOff(func() error {
@ -169,7 +171,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotification() {
err = bob2.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey) err = bob2.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey)
s.Require().NoError(err) s.Require().NoError(err)
err = bob2.RegisterForPushNotifications(context.Background(), bob2DeviceToken) err = bob2.RegisterForPushNotifications(context.Background(), bob2DeviceToken, testAPNTopic, protobuf.PushNotificationRegistration_APN_TOKEN)
s.Require().NoError(err) s.Require().NoError(err)
err = tt.RetryWithBackOff(func() error { err = tt.RetryWithBackOff(func() error {
@ -319,7 +321,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotificationFromContactO
err = bob.EnablePushNotificationsFromContactsOnly() err = bob.EnablePushNotificationsFromContactsOnly()
s.Require().NoError(err) s.Require().NoError(err)
err = bob.RegisterForPushNotifications(context.Background(), bob1DeviceToken) err = bob.RegisterForPushNotifications(context.Background(), bob1DeviceToken, testAPNTopic, protobuf.PushNotificationRegistration_APN_TOKEN)
s.Require().NoError(err) s.Require().NoError(err)
// Pull servers and check we registered // Pull servers and check we registered
@ -463,7 +465,7 @@ func (s *MessengerPushNotificationSuite) TestReceivePushNotificationRetries() {
err = bob.EnablePushNotificationsFromContactsOnly() err = bob.EnablePushNotificationsFromContactsOnly()
s.Require().NoError(err) s.Require().NoError(err)
err = bob.RegisterForPushNotifications(context.Background(), bob1DeviceToken) err = bob.RegisterForPushNotifications(context.Background(), bob1DeviceToken, testAPNTopic, protobuf.PushNotificationRegistration_APN_TOKEN)
s.Require().NoError(err) s.Require().NoError(err)
// Pull servers and check we registered // Pull servers and check we registered
@ -650,7 +652,7 @@ func (s *MessengerPushNotificationSuite) TestActAsYourOwnPushNotificationServer(
err := bob1.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey) err := bob1.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey)
s.Require().NoError(err) s.Require().NoError(err)
err = bob1.RegisterForPushNotifications(context.Background(), bob1DeviceToken) err = bob1.RegisterForPushNotifications(context.Background(), bob1DeviceToken, testAPNTopic, protobuf.PushNotificationRegistration_APN_TOKEN)
// Pull servers and check we registered // Pull servers and check we registered
err = tt.RetryWithBackOff(func() error { err = tt.RetryWithBackOff(func() error {
@ -680,7 +682,7 @@ func (s *MessengerPushNotificationSuite) TestActAsYourOwnPushNotificationServer(
err = bob2.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey) err = bob2.AddPushNotificationsServer(context.Background(), &server.identity.PublicKey)
s.Require().NoError(err) s.Require().NoError(err)
err = bob2.RegisterForPushNotifications(context.Background(), bob2DeviceToken) err = bob2.RegisterForPushNotifications(context.Background(), bob2DeviceToken, testAPNTopic, protobuf.PushNotificationRegistration_APN_TOKEN)
s.Require().NoError(err) s.Require().NoError(err)
err = tt.RetryWithBackOff(func() error { err = tt.RetryWithBackOff(func() error {

View File

@ -121,9 +121,6 @@ type Config struct {
InstallationID string InstallationID string
Logger *zap.Logger Logger *zap.Logger
// TokenType is the type of token
TokenType protobuf.PushNotificationRegistration_TokenType
} }
type Client struct { type Client struct {
@ -141,6 +138,10 @@ type Client struct {
AccessToken string AccessToken string
// deviceToken is the device token for this device // deviceToken is the device token for this device
deviceToken string deviceToken string
// TokenType is the type of token
tokenType protobuf.PushNotificationRegistration_TokenType
// APNTopic is the topic of the apn topic for push notification
apnTopic string
// randomReader only used for testing so we have deterministic encryption // randomReader only used for testing so we have deterministic encryption
reader io.Reader reader io.Reader
@ -245,11 +246,11 @@ func (c *Client) Reregister(contactIDs []*ecdsa.PublicKey, mutedChatIDs []string
return nil return nil
} }
return c.Register(c.deviceToken, contactIDs, mutedChatIDs) return c.Register(c.deviceToken, c.apnTopic, c.tokenType, contactIDs, mutedChatIDs)
} }
// Register registers with all the servers // Register registers with all the servers
func (c *Client) Register(deviceToken string, contactIDs []*ecdsa.PublicKey, mutedChatIDs []string) error { func (c *Client) Register(deviceToken, apnTopic string, tokenType protobuf.PushNotificationRegistration_TokenType, contactIDs []*ecdsa.PublicKey, mutedChatIDs []string) error {
// stop registration loop // stop registration loop
c.stopRegistrationLoop() c.stopRegistrationLoop()
@ -260,6 +261,8 @@ func (c *Client) Register(deviceToken string, contactIDs []*ecdsa.PublicKey, mut
} }
c.deviceToken = deviceToken c.deviceToken = deviceToken
c.apnTopic = apnTopic
c.tokenType = tokenType
registration, err := c.buildPushNotificationRegistrationMessage(contactIDs, mutedChatIDs) registration, err := c.buildPushNotificationRegistrationMessage(contactIDs, mutedChatIDs)
if err != nil { if err != nil {
@ -440,7 +443,7 @@ func (c *Client) EnablePushNotificationsFromContactsOnly(contactIDs []*ecdsa.Pub
c.config.AllowFromContactsOnly = true c.config.AllowFromContactsOnly = true
if c.lastPushNotificationRegistration != nil { if c.lastPushNotificationRegistration != nil {
c.config.Logger.Debug("re-registering after enabling push notifications from contacts only") c.config.Logger.Debug("re-registering after enabling push notifications from contacts only")
return c.Register(c.deviceToken, contactIDs, mutedChatIDs) return c.Register(c.deviceToken, c.apnTopic, c.tokenType, contactIDs, mutedChatIDs)
} }
return nil return nil
} }
@ -450,7 +453,7 @@ func (c *Client) DisablePushNotificationsFromContactsOnly(contactIDs []*ecdsa.Pu
c.config.AllowFromContactsOnly = false c.config.AllowFromContactsOnly = false
if c.lastPushNotificationRegistration != nil { if c.lastPushNotificationRegistration != nil {
c.config.Logger.Debug("re-registering after disabling push notifications from contacts only") c.config.Logger.Debug("re-registering after disabling push notifications from contacts only")
return c.Register(c.deviceToken, contactIDs, mutedChatIDs) return c.Register(c.deviceToken, c.apnTopic, c.tokenType, contactIDs, mutedChatIDs)
} }
return nil return nil
} }
@ -549,8 +552,9 @@ func (c *Client) loadLastPushNotificationRegistration() error {
c.lastContactIDs = lastContactIDs c.lastContactIDs = lastContactIDs
c.lastPushNotificationRegistration = lastRegistration c.lastPushNotificationRegistration = lastRegistration
c.deviceToken = lastRegistration.DeviceToken c.deviceToken = lastRegistration.DeviceToken
c.apnTopic = lastRegistration.ApnTopic
c.tokenType = lastRegistration.TokenType
return nil return nil
} }
func (c *Client) stopRegistrationLoop() { func (c *Client) stopRegistrationLoop() {
@ -834,7 +838,8 @@ func (c *Client) buildPushNotificationRegistrationMessage(contactIDs []*ecdsa.Pu
options := &protobuf.PushNotificationRegistration{ options := &protobuf.PushNotificationRegistration{
AccessToken: token, AccessToken: token,
TokenType: c.config.TokenType, TokenType: c.tokenType,
ApnTopic: c.apnTopic,
Version: c.getVersion(), Version: c.getVersion(),
InstallationId: c.config.InstallationID, InstallationId: c.config.InstallationID,
DeviceToken: c.deviceToken, DeviceToken: c.deviceToken,

View File

@ -57,7 +57,7 @@ func PushNotificationRegistrationToGoRushRequest(requestAndRegistrations []*Requ
Tokens: []string{registration.DeviceToken}, Tokens: []string{registration.DeviceToken},
Platform: tokenTypeToGoRushPlatform(registration.TokenType), Platform: tokenTypeToGoRushPlatform(registration.TokenType),
Message: defaultNotificationMessage, Message: defaultNotificationMessage,
Topic: "im.status.ethereum.pr", Topic: registration.ApnTopic,
Data: &GoRushRequestData{ Data: &GoRushRequestData{
EncryptedMessage: hex.EncodeToString(request.Message), EncryptedMessage: hex.EncodeToString(request.Message),
ChatID: request.ChatId, ChatID: request.ChatId,

View File

@ -430,7 +430,7 @@ func (api *PublicAPI) StopPushNotificationsServer() error {
// PushNotification client endpoints // PushNotification client endpoints
func (api *PublicAPI) RegisterForPushNotifications(ctx context.Context, deviceToken string) error { func (api *PublicAPI) RegisterForPushNotifications(ctx context.Context, deviceToken string, apnTopic string, tokenType protobuf.PushNotificationRegistration_TokenType) error {
// We set both for now as they are equivalent // We set both for now as they are equivalent
err := api.service.accountsDB.SaveSetting("remote-push-notifications-enabled?", true) err := api.service.accountsDB.SaveSetting("remote-push-notifications-enabled?", true)
if err != nil { if err != nil {
@ -441,7 +441,7 @@ func (api *PublicAPI) RegisterForPushNotifications(ctx context.Context, deviceTo
return err return err
} }
return api.service.messenger.RegisterForPushNotifications(ctx, deviceToken) return api.service.messenger.RegisterForPushNotifications(ctx, deviceToken, apnTopic, tokenType)
} }
func (api *PublicAPI) UnregisterForPushNotifications(ctx context.Context) error { func (api *PublicAPI) UnregisterForPushNotifications(ctx context.Context) error {