如何在没有iPhone的情况下testingApple推送通知服务?

是否可以在没有iPhone应用程序的情况下testingApple推送通知服务? (在Windows上创build一个模拟器?)

如果不是,我怎么testing呢? 有没有免费的示例应用程序编译来做到这一点?

我创build了服务器提供程序,但是我需要testingfunction性。

很抱歉地说,但是你需要找一些硬件来testing这个function。

推送通知在模拟器中不可用。 他们需要iTunes Connect的configuration文件,因此需要安装在设备上。 这也意味着你可能不得不被苹果iPhone开发者计划接受,并支付99美元。

从好的一面来看,在iPhone OS 3.0更新中,您可以在任何设备(包括第一代iPhone)上testing此function。

你不能testing真正的推送通知。 但是 ,您可以通过以编程方式创build一个应用程序模拟推送通知的响应 ,并手动触发您的AppDelegate的- application:application didReceiveRemoteNotification:notification方法来testing您的应用程序的响应

从不同的类(如UIViewController)触发这个:

 [[[UIApplication sharedApplication] delegate] application:[UIApplication sharedApplication] didReceiveRemoteNotification:testNotification]; 

testNotification应该与真实通知具有相同的格式,即包含属性列表对象和NSNull的NSDictionary。

这里是一个如何提供上面的testNotification的例子:

 NSMutableDictionary *notification = [[NSMutableDictionary alloc] init]; [notification setValue:@"Test" forKey:@"alert"]; [notification setValue:@"default" forKey:@"sound"]; NSMutableDictionary *testNotification = [[NSMutableDictionary alloc] init]; [testNotification setValue:notification forKey:@"aps"]; 

这应该创build一个合理的通知NSDictionary来处理。

现在,我们可以用这个库来testing推送通知。

通过terminal发送推送非常简单:

 echo -n '{"message":"message"}' | nc -4u -w1 localhost 9930 echo -n '{"aps":{"alert" : "message","badge" : 99,"sound" : "default"}, "myField" : 54758}' | nc -4u -w1 localhost 9930 

模拟器不会执行推送通知。

而从服务器推送,你必须有设备(S)推到你的应用程序在该设备上。

该令牌包含应用程序标识以及设备标识。

你必须使用

 NSString *notificationString = @"{\"aps\":{\"alert\":\"Test alert\",\"sound\":\"default\"}}"; NSData *notificationData = [notificationString dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *testNotification = [NSJSONSerialization JSONObjectWithData:notificationData options:0 error:&error]; [[[UIApplication sharedApplication] delegate] application:[UIApplication sharedApplication] didReceiveRemoteNotification:testNotification fetchCompletionHandler:nil];