Skip to content

Commit 9ca2bbe

Browse files
committed
Fixed error when using To instead of RegistrationId - GCM
Fix for NullReferenceException issue - Redth#629 Additional fix for retrieving oldRegistrationId from the 'To' field if 'RegistrationIds' is empty or null
1 parent 211c0eb commit 9ca2bbe

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

PushSharp.Google/GcmNotification.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ public static GcmNotification ForSingleResult (GcmResponse response, int resultI
1414
var result = new GcmNotification ();
1515
result.Tag = response.OriginalNotification.Tag;
1616
result.MessageId = response.OriginalNotification.MessageId;
17-
result.RegistrationIds.Add (response.OriginalNotification.RegistrationIds [resultIndex]);
17+
18+
if (response.OriginalNotification.RegistrationIds != null && response.OriginalNotification.RegistrationIds.Count >= (resultIndex + 1))
19+
result.RegistrationIds.Add (response.OriginalNotification.RegistrationIds [resultIndex]);
20+
1821
result.CollapseKey = response.OriginalNotification.CollapseKey;
1922
result.Data = response.OriginalNotification.Data;
2023
result.DelayWhileIdle = response.OriginalNotification.DelayWhileIdle;

PushSharp.Google/GcmServiceConnection.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,13 @@ async Task processResponseOk (HttpResponseMessage httpResponse, GcmNotification
119119
var oldRegistrationId = string.Empty;
120120

121121
if (singleResultNotification.RegistrationIds != null && singleResultNotification.RegistrationIds.Count > 0)
122-
oldRegistrationId = singleResultNotification.RegistrationIds [0];
122+
{
123+
oldRegistrationId = singleResultNotification.RegistrationIds[0];
124+
}
125+
else if (!string.IsNullOrEmpty(singleResultNotification.To))
126+
{
127+
oldRegistrationId = singleResultNotification.To;
128+
}
123129

124130
multicastResult.Failed.Add (singleResultNotification, new DeviceSubscriptonExpiredException {
125131
OldSubscriptionId = oldRegistrationId,
@@ -131,7 +137,13 @@ async Task processResponseOk (HttpResponseMessage httpResponse, GcmNotification
131137
var oldRegistrationId = string.Empty;
132138

133139
if (singleResultNotification.RegistrationIds != null && singleResultNotification.RegistrationIds.Count > 0)
134-
oldRegistrationId = singleResultNotification.RegistrationIds [0];
140+
{
141+
oldRegistrationId = singleResultNotification.RegistrationIds[0];
142+
}
143+
else if (!string.IsNullOrEmpty(singleResultNotification.To))
144+
{
145+
oldRegistrationId = singleResultNotification.To;
146+
}
135147

136148
multicastResult.Failed.Add (singleResultNotification, new DeviceSubscriptonExpiredException { OldSubscriptionId = oldRegistrationId });
137149
} else {

0 commit comments

Comments
 (0)