iOS:APNS推送主要代码

首先,在AppDelegate.m 中:

1,注册通知

//[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    ViewController *mainCtrl=[[ViewController alloc] init];
    self.window.rootViewController=mainCtrl;  

    //注册通知
    if ([UIDevice currentDevice].systemVersion.doubleValue<8.0) {
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];
    }
    else {
        [[UIApplication sharedApplication] registerForRemoteNotifications];
        [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil]];
    }  

    //判断是否由远程消息通知触发应用程序启动
    if (launchOptions) {
        //获取应用程序消息通知标记数(即小红圈中的数字)
        NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
        if (badge>0) {
            //如果应用程序消息通知标记数(即小红圈中的数字)大于0,清除标记。
            badge--;
            //清除标记。清除小红圈中数字,小红圈中数字为0,小红圈才会消除。
            [UIApplication sharedApplication].applicationIconBadgeNumber = badge;
            NSDictionary *pushInfo = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];  

            //获取推送详情
            NSString *pushString = [NSString stringWithFormat:@"%@",[pushInfo  objectForKey:@"aps"]];
            UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"finish Loaunch" message:pushString delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:nil, nil nil];
            [alert show];
        }
    }  

    return YES;  

2,注册通知后,获取device token

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *token = [NSString stringWithFormat:@"%@", deviceToken];
    NSLog(@"My token is:%@", token);
    //这里应将device token发送到服务器端
}  

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSString *error_str = [NSString stringWithFormat: @"%@", error];
    NSLog(@"Failed to get token, error:%@", error_str);
}  

3,接收推送通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UIApplication sharedApplication].applicationIconBadgeNumber=0;
    for (id key in userInfo) {
        NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
    }
    /* eg.
    key: aps, value: {
        alert = "\U8fd9\U662f\U4e00\U6761\U6d4b\U8bd5\U4fe1\U606f";
        badge = 1;
        sound = default;
    }
     */
    UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"remote notification" message:userInfo[@"aps"][@"alert"] delegate:nil cancelButtonTitle:@"cancel" otherButtonTitles:nil, nil nil];
    [alert show];
}  

注意:app 前台运行时,会调用 remote notification;app后台运行时,点击提醒框,会调用remote notification,点击app 图标,不调用remote notification,没反应;app 没有运行时,点击提醒框,finishLaunching   中,launchOptions 传参,点击app 图标,launchOptions 不传参,不调用remote notification。

时间: 2024-10-23 22:16:40

iOS:APNS推送主要代码的相关文章

iOS APNS推送前端和后端(Java)代码

Push的原理: Push 的工作机制可以简单的概括为下图: Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器. 上图可以分为三个阶段. 第一阶段:Push服务器应用程序把要发送的消息.目的iPhone的标识打包,发给APNS. 第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iP

iOS apns推送

前言:推送分为本地推送以及远程推送. 两者的区别为本地推送一般为定时推送.定期推送或者位置推送.而远程推送更为多样化,能满足较高的要求.当然远程推送需要服务器端开发,开发流程较复杂. 1.本地推送只需要在客户端写代码即可,实现简单轻松. (1)本地推送在app未开启的情况下也能收到本地推送的消息.会走这个入口方法 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color

iOS 下APNS推送处理函数具体解释

相比起Android,iOS在推送方面无疑惯例得更好.APNS(Apple Push Notification Service)是苹果公司提供的消息推送服务.其原理就是.第三方应用将要推送给用户的信息推送到苹果server.苹果server再通过统一的系统接口将这些信息推送到用户的手机上.假设对此不舍了解的朋友能够參见这篇文章:一步一步教你做ios 推送 本文着重叫在App端怎样处理推送信息. 主要涉及一下几个比較重要的函数,而这些函数都是AppDelegate类中: - (BOOL)appli

iOS 下APNS推送处理函数详解

相比起Android,iOS在推送方面无疑惯例得更好.APNS(Apple Push Notification Service)是苹果公司提供的消息推送服务.其原理就是,第三方应用将要推送给用户的信息推送到苹果服务器,苹果服务器再通过统一的系统接口将这些信息推送到用户的手机上.如果对此不舍了解的朋友可以参见这篇文章:一步一步教你做ios 推送 本文着重叫在App端如何处理推送信息.主要涉及一下几个比较重要的函数,而这些函数都是AppDelegate类中: - (BOOL)application:

iOS的推送机制APNs:本地推送&amp;远程推送

本地推送: 本地推送主要应用在备忘录,闹钟等本地的,基于时间定时的消息提醒.本篇不做详细描述. 远程推送:APNS(苹果推送通知服务) iOS远程推送机制的原理及流程: 注册推送(橙色部分):若该App允许接收推送消息,则先要在代码中注册远程推送.注册推送后,iOS带着设备序列号去请求ANPS而获得deviceToken.然后App把deviceToken发送给我们App的服务器.因为若服务器有消息给我们推送时,它会把要发送的消息和deviceToken按照一定的格式一并打包发送给ANPS服务器

iOS 通知推送APNS

结合网上各个资料,再简单整理的一份. 一.APNS推送说明 1.你的IOS应用需要去注册APNS消息推送功能. 2.当苹果APNS推送服收到来自你应用的注册消息就会返回一串device token给你(很重要) 3.将应用收到的device Token传给你本地的Push服务器. 4.当你需要为应用推送消息的时候,你本地的推送服务器会将消息,以及Device Token打包发送到苹果的APNS服 5.APNS再将消息推送给目的iphone 二.推送的准备工作 推送准备的主要就是1.推送证书 2.

IOS使用APNS推送Payload字节数限制导致推送不成功

这2天需要在推送上加上脚本,找到了badge方法可以加脚本.加上后但是怎么推送也不成功.郁闷了好久,在网上查找相关资料. 终于被我找到原因: "Payload--最多256bytes." 原来是发送的payload字节超过规定字符. 使用payload.getBytes().length得到字节数.查看了下字符个数240个字节,没有超过256,反复测试,得知,256bytes也不够准确.就把原payload中的某些值去掉了(loginUri登录,uri用于跳转),再次测试,推送成功.

iOS开发之功能模块--Apns推送中的的json格式介绍

在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 aps 字典.它使用字符串而不是字典作为 alert 的值,该负载同样包含了一个自定义的属性数组. { "aps" : { "alert" : "message" },//alert表示推送的消息文本 "parm" : [ &quo

iOS 消息推送实现 APNS

本文只是记录一下如何在自己的电脑上配置APNS推送环境,其它的如推送的原理,流程什么的这里就不写了. 一. 去Apple 开发者中心,创建App ID.注意App ID不能使用通配符.并注意添加Push Notification Service 对于已经创建的APP ID,也可以编辑给他添加Push Notification Service 二. 创建development 和 production的Certificates及Profiles.  步骤略. 注意 1. 创建Profile的时候A