foreach(var row in data.rows)
{
var url = string.Format("https://{0}:{1}/3/device/{2}", apnsHost, APNS_API_PORT, row.token);
using (var request = new HttpRequestMessage(HttpMethod.Post, url))
{
accessToken = tools.CreateToken(p8CertInfo,certDetail.send_key);
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.TryAddWithoutValidation("apns-push-type", "alert");
request.Headers.TryAddWithoutValidation("apns-id", Guid.NewGuid().ToString("D"));
request.Headers.TryAddWithoutValidation("apns-expiration", Convert.ToString(0));
request.Headers.TryAddWithoutValidation("apns-priority", Convert.ToString(10));
request.Headers.TryAddWithoutValidation("apns-topic", p8CertInfo.bundle_id);
request.Content = new ByteArrayContent(payload);
request.Version = HttpVersion.Version20;
try
{
using (var httpResponseMessage = _client.SendAsync(request).GetAwaiter().GetResult())
{
string statusCode = httpResponseMessage.StatusCode.ToString();
if (httpResponseMessage.IsSuccessStatusCode)
{
...
}
else
{
...
}
}
}
catch (Exception ex)
{
}
}
}
想請問 一開始發送都是正常的,但後續就會開始出現status Code : 429 , reason : TooManyProviderTokenUpdates
google之後本以為是token失效,但已在每次發送前都重新產生新的token,時戳應該是不會失效的才對
想問問程式碼是否有哪裡需要調整ˊˋ?
根據這篇的說法
原因:在短時間
內重覆大量
發送推播至相同 deviceToken
解法(原文照抄):
If you have a way to check your code, verify that your device tokens being sent in the requests are unique.
Make sure your code does not have a repetition loop in there whch might be sending multiple requests to each device.
另外提一下
如果不是為了練功或特殊原因
建議使用 Google Firebase 發推播
HI 海綿寶寶 大大你好
這篇我也有查到,所以我有看了資料,我是隨機產生大量的資料,token用的是GUID()應該是不會有重複的device token,我預期應該會收到BadDeviceToken,因為token確實是無效的
紀錄的Log大致如下,token是沒有重複的
確實有特殊原因非用APNs不可...ˊˋ