我正在使用最新的PushSharp版本通过APN发送推送通知。 我使用他们的git wiki页面中给出的以下代码来发送通知。
// Configuration (NOTE: .pfx can also be used here)
var config = new ApnsConfiguration (ApnsConfiguration.ApnsServerEnvironment.Sandbox,
"push-cert.p12", "push-cert-pwd");
// Create a new broker
var apnsBroker = new ApnsServiceBroker (config);
// Wire up events
apnsBroker.OnNotificationFailed += (notification, aggregateEx) => {
aggregateEx.Handle (ex => {
// See what kind of exception it was to further diagnose
if (ex is ApnsNotificationException) {
var notificationException = (ApnsNotificationException)ex;
// Deal with the failed notification
var apnsNotification = notificationException.Notification;
var statusCode = notificationException.ErrorStatusCode;
Console.WriteLine ($"Apple Notification Failed: ID={apnsNotification.Identifier}, Code={statusCode}");
} else {
// Inner exception might hold more useful information like an ApnsConnectionException
Console.WriteLine ($"Apple Notification Failed for some unknown reason : {ex.InnerException}");
}
// Mark it as handled
return true;
});
};
apnsBroker.OnNotificationSucceeded += (notification) => {
Console.WriteLine ("Apple Notification Sent!");
};
// Start the broker
apnsBroker.Start ();
foreach (var deviceToken in MY_DEVICE_TOKENS) {
// Queue a notification to send
apnsBroker.QueueNotification (new ApnsNotification {
DeviceToken = deviceToken,
Payload = JObject.Parse ("{\"aps\":{\"badge\":7}}")
});
}
// Stop the broker, wait for it to finish
// This isn't done after every message, but after you're
// done with the broker
apnsBroker.Stop ();
混乱 -
我不知道方法apnsBroker.QueueNotification是否会发送推送,或者只是排队。
如果我需要在Windows机器上以某种方式安装Apple证书,我不会这样做。
最新版本的PushSharp没有正确的在线示例代码。
请帮忙!
答案 0 :(得分:0)
只需在控制台应用程序中激活上述代码,Pushsharp就会发送通知。
Apple一次只允许一个推送令牌进行推送通知。
答案 1 :(得分:0)
代码就像它一样工作。但是你说的有一些不确定的地方。
在排队时会立即发送第一个通知,它只是一个异步机制,不在那里等待代码。因此,如果出现任何问题(或正确),您可以通过经纪人的事件处理它。
第二部分有点复杂。首先,您已经在macOS机器上创建了推送证书。您必须将其上传到您的开发者帐户等。您可以通过谷歌找到视频。在这里描述它很长。比你必须导出你的" Apple推送服务"从macOSmachine到p12文件的证书。然后将.p12文件放到您的.net服务文件夹中,例如转到" App_Data"文件夹并加载它(我假设您正在编写Web服务):
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox,
Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "App_Data", "yourfileName.p12"),"yourFilePassword");
我希望能帮助你。