IOS---APNS,推送通知

推送通知功能的实现,大致分三个模块:证书,代码,服务器

首先,第一块是证书,也是最容易出错的地方
  
       要想app有推送功能,首先是必须将app注册,那就是生成带有推送功能的证书;这个必须到苹果开发者网站上去注册,并生成证书。
具体步骤如下: 

       首先生成钥匙证书,在本地操作:


         
IOS---APNS,推送通知_第1张图片
 
给证书设置邮箱,及名字     
        
IOS---APNS,推送通知_第2张图片
 
邮箱最好是开发者邮箱,名字最好是app的名字,设置完成后,就保存。

这步完成后,就会生成一个.certSigningRequest 的文件,这时到keychain Access中的key中可以看到刚才生成的秘钥;接下来需要导出.p12文件:

     
IOS---APNS,推送通知_第3张图片
 
导出时需要设置密码,一定要记住哦 ,后面会用到。

       完成上面步骤,现在需要去苹果开发者网站上注册,并生成证书

    
IOS---APNS,推送通知_第4张图片
 

这里有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);另一个是证书(密码是合成时设置的),这个证书文件需要开发者自己通过终端合成;这需要看你服务器需要什么合成文件。


其他参考网站:http://www.dozer.cc/2013/03/push-notifications-server-side-implement/
                    http://www.cocoachina.com/iphonedev/sdk/2011/1124/3599.html

                    http://www.csdn.net/article/2012-02-18/311976 

http://www.cocoachina.com/bbs/read.php?tid=166034&page=e&#a

你可能感兴趣的:(ios,服务器,开发者,apns,推送通知)