我正在尝试通过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/

10-09 06:37