- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSString *tokenStr = [NSString stringWithFormat:@"%@",deviceToken];
tokenStr = [tokenStr stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];//将其中的<>去掉
tokenStr = [tokenStr stringByReplacingOccurrencesOfString:@" " withString:@""];//将其中的空格去掉
//tokenStr 得到可用的token。
}
2. 程序启动时每次收到推送 或 程序未启动通过推送消息启动程序时,都将会触发appdelegate里面的方法(注意要跟服务器的证书一直,比如开发环境,服务器也要用开发证书的pem才行):
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//////////这里是收到推送后的逻辑代码
// 需要 #import <AudioToolbox/AudioToolbox.h>
AudioServicesPlaySystemSound(1007); //系统的通知声音
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);//震动
//自定义声音
NSString *path = [[NSBundle mainBundle] pathForResource:@"message" ofType:@"wav"];
//组装并播放音效
SystemSoundID soundID;
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID);
//声音停止
AudioServicesDisposeSystemSoundID(soundID);
}
aps = {
alert = "";//推送显示的问题信息在这里
badge = 0;//app的icon右上角的推送数字 在这里设置
sound = "";
};
{
"aps" : { "alert" : "This is the alert text", "badge" : 1, "sound" : "default" },
"server" : { "serverId" : 1, "name" : "Server name")
}
这样收到的userInfo里面会多一个server的字段。
3. 如果需要代码控制BadgeNum(icon右上角的数字):
[UIApplication sharedApplication].applicationIconBadgeNumber = 10;
来源:http://blog.sina.com.cn/s/blog_6afb7d800101faiz.html
来源:http://www.wahenzan.com/a/mdev/ios/2014/1215/351.html