我正在尝试通过PushSharp向iOS设备发送推送通知。对于android,它可以工作。对于IOS,对StopAllServices()
的调用将永久挂起,而不会调用任何异常处理程序。
问题可能出在给我一个.pem证书文件,而pushsharp需要一个.p12文件吗?
代码如下:
var br = new PushBroker();
br.OnNotificationSent += br_OnNotificationSent;
br.OnNotificationFailed += br_OnNotificationFailed;
br.OnChannelException += br_OnChannelException;
br.OnServiceException += br_OnServiceException;
br.OnDeviceSubscriptionChanged += br_OnDeviceSubscriptionChanged;
br.OnDeviceSubscriptionExpired += br_OnDeviceSubscriptionExpired;
br.OnChannelCreated += br_OnChannelCreated;
br.OnChannelDestroyed += br_OnChannelDestroyed;
var appleCert = Resource1.ck; // this is a pem file, not a p12 file!!! could this be the problem?
var sandbox = true;
br.RegisterAppleService(new ApplePushChannelSettings(!sandbox, appleCert, "223684"));
// password given to me by ios developer
var deviceIds = new string[] { "09eddcb8b89494adf802a0caf97d5daaa789a53f52d8c544dbdcf39f2c0b619a" };
foreach (var did in deviceIds)
{
br.QueueNotification(
new AppleNotification()
.ForDeviceToken(did)//the recipient device id
.WithAlert("test: " + DateTime.Now.ToString())//the message
.WithBadge(1)
.WithSound("sound.caf"));
}
br.StopAllServices(waitForQueuesToFinish: true); // hangs forever, no callbacks are called
我使用的是通过Git拍摄的PushSharp,并由我自己使用Visual Studio 2013进行了编译(截至昨天)。
如果代码在控制台应用程序和asp.net应用程序中,挂起都会发生。
我正在使用沙箱,因为有人告诉我。如果使用生产服务器,则会出现一个异常,告诉我该证书用于沙箱。
感谢您提供有关冻结原因的任何提示。
最佳答案
我们花了一整天的时间来猜测问题所在!
最后是错误的Newtonsoft.Json版本
我们解决方案中的某些项目依赖于该库的旧版本,因此,我们很不幸在Web项目的/ bin文件夹中获得了错误的版本。
关于c# - PushSharp-iOS-StopAllServices()挂起没有错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24531058/