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