什么是远程的消息推送?
是由服务器端向我们的手机程序发送一条推送消息,其中有一个叫做APNs的中间媒介,也就是我们的服务器先将消息发送到APNs,再由APNs检测注册过PUSH的iphone手机,然后向这些手机发送消息。
这种连接是怎样建立的?
先是由我们的ios程序注册远程的PUSH,如果注册成功的话,会由APNs返回给我们的程序一个token,然后由我们的程序将这个token利用网络的传输,传递给我们的服务器。再由服务器向APNs发送消息,APNs转送这些消息给我们的手机app。
由于远程的推送只能由真机来实现,所以这里就要涉及到真机调试的内容。
这里一些截图和文字的说明就用一个链接来显示点击打开链接
这里和其他程序真机调试时候不同之出在于,此处生成的CER证书需要用到Apple Push Notification Service SSL
到此我们的程序就具备了在真机上调试的能力。
ios程序向APNs注册的代码基本上嗾使一样的在连接的博文里面也是有的。
首先在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
里面注册远程通知
- [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
- (UIRemoteNotificationTypeAlert|
- UIRemoteNotificationTypeBadge|
- UIRemoteNotificationTypeSound)];
以及注册成功之后的,程序启动前接受到的通知响应。
- if (launchOptions) {
- ///获取到推送相关的信息
- NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
- }
然后重写他的几个代理方法:
- ///Token值成功获取的时候走的是这个方法(Token值不能带空格)
- -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
- {
- NSLog(@"%@",deviceToken);
- }
- ///Token值获取失败的时候走的是这个方法
- -(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
- {
- NSLog(@"%@",error);
- }
- ///应用程序处在打开状态,且服务器有推送消息过来时,以及通过推送打开应用程序,走的是这个方法
- -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
- {
- for (id key in userInfo) {
- NSLog(@"%@:%@",key, [userInfo objectForKey:key]);
- }
- ///Icon推送数量设为0
- // application.applicationIconBadgeNumber=0;
- }
这样一来客户端的推送就完成了。
然后接下来我们要准备的是服务器端需要的文件。
也就是连接中的利用控制太生成的一些文件。