如何在没有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];