推送通知的实现
首先,第一块是证书,也是最容易出错的地方
要想app有推送功能,首先是必须将app注册,那就是生成带有推送功能的证书;这个必须到苹果开发者网站上去注册,并生成证书。
具体步骤如下:
首先生成钥匙证书,在本地操作:
给证书设置邮箱,及名字
邮箱最好是开发者邮箱,名字最好是app的名字,设置完成后,就保存。
这步完成后,就会生成一个.certSigningRequest 的文件,这时到keychain Access中的key中可以看到刚才生成的秘钥;接下来需要导出.p12文件:
导出时需要设置密码,一定要记住哦 ,后面会用到。
完成上面步骤,现在需要去苹果开发者网站上注册,并生成证书
这里有development和production两种;development是测试,production是发布用的;一般都需要这两种,以便测试;
生成推送通知证书,必须生成apple push .....的证书,如上图中的apple push.....;
要走下面的步骤,必须先设置一个appid,这个id是惟一的,而不是通配的
开始时可以先生成development的,按照提示走,最后会生成一个aps_development.cer文件;接着生成production的,最后会生成一个aps_production.cer文件。(这里面有一步是需要选择appid的,这时需要选择需要推送的app名字); 将.cer文件下载下来,将其导入keychain Access中(双击就行)。
完成了上面的操作,就去生成.mobileprovision证书,生成完后将其下载下来,并将导入Xcode中;
第二步:代码块
在appDelegate中实现代码块;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//注册接收通知类型
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge
| UIRemoteNotificationTypeSound
| UIRemoteNotificationTypeAlert)];
//设置图标标记 ,这里设为0时,每次启动后,图标上的提醒数字就会消失;
application.applicationIconBadgeNumber = 1;
return YES;
}
注册后要实现下面方法:
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@”设备令牌: %@”, deviceToken); //这是服务器需要的
NSString *tokeStr = [NSString stringWithFormat:@"%@",deviceToken];
if ([tokeStr length] == 0) {
return;
}
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@”获得令牌失败: %@”, error);
}
第三步:发送消息的服务器
在这一步需要,传两个参数给服务器,一个是令牌(deviceToken);另一个是证书(密码是合成时设置的),这个证书文件需要开发者自己通过终端合成;这需要看你服务器需要什么合成文件。