现在的位置: 首页 > 综合 > 正文

iOS 推送通知 客户端实现

2018年05月12日 ⁄ 综合 ⁄ 共 1737字 ⁄ 字号 评论关闭

关于推送,已经有很多文章了,我写一下自己在做推送时候的一些个人理解,对于如何取证书还有服务器实现网上有现成代码,不在累述。如果有说的不对的地方,希望大家指正。

首先:

-(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary
*)launchOptions

在这个方法里添加上

 

UIRemoteNotificationType  types= UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert;

   [[UIApplicationsharedApplication]registerForRemoteNotificationTypes:types];

这里表明 一共注册三种类型badge,alert,和sound


会在第一次使用时候提醒用户是否接受推送,(只会提醒一次),当用户选择允许之后会在

 

-(void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken :( NSData
*)deviceToken

这个方法里取得设备的token号,然后发送给你们的服务器(因为token不是永远不变的,建议在程序轮询取一次,存好)




当用户选择不允许的时候或者此时使用模拟器的时候会实现该方法

 

-(void)application:(UIApplication *)applicationdidFailToRegisterForRemoteNotificationsWithError :( NSError
*)error

当用户正在使用该程序的时候,可以用一个alertview提醒用户,(主要是为了与自己服务器通信,取得一次最新数据)

 

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary
*)userInfo

{

    

  
//
当用户打开程序时候收到远程通知后执行  

   
if
(application.applicationState ==
UIApplicationStateActive
) { 

 

      UIAlertView*alertView = [[UIAlertViewalloc]
initWithTitle:@"新消息提示" 

                                                  message:[NSString
stringWithFormat:@"\n%@",  

                                                  
       [[userInfo objectForKey:@"aps"]
objectForKey:@"alert"]]  

                                                 delegate:self
 

                                         cancelButtonTitle:@"确定" 

                                         otherButtonTitles:nil];  

       

       

       [alertView
show];  

       [alertView release];  

 

      

       

    }  

       

}

在这里与服务器通信

-(void) alertView:(UIAlertView *)alertViewclickedButtonAtIndex:(NSInteger)buttonIndex

{

}

另外:

可以在这个方法里面把icon图标数字变为零,(这个主要根据软件需要)

-(void)applicationDidBecomeActive:(UIApplication
*)application

{

   [[UIApplicationsharedApplication]setApplicationIconBadgeNumber:0];

  

}

抱歉!评论已关闭.