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。

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5132759.html ,如需转载请自行联系原作者
相关文章
|
10月前
|
移动开发 安全 数据安全/隐私保护
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
|
10月前
|
移动开发 前端开发 数据安全/隐私保护
【工具】iOS代码混淆工具-iOS源码混淆
【工具】iOS代码混淆工具-iOS源码混淆
95 1
|
10月前
|
移动开发 前端开发 安全
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
|
5月前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
10月前
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
162 2
|
10月前
|
移动开发 安全 数据安全/隐私保护
iOS 代码混淆和加固技术详解
iOS 代码混淆和加固技术详解
|
10月前
|
移动开发 前端开发 数据安全/隐私保护
iOS 代码混淆 - 从入门到放弃
iOS 代码混淆 - 从入门到放弃
|
10月前
|
移动开发 安全 前端开发
iOS代码混淆工具
iOS代码混淆工具
137 1
|
10月前
|
安全 算法 数据安全/隐私保护
iOS 代码加固与保护方法详解 - 提升 iOS 应用安全性的关键步骤
iOS 代码加固与保护方法详解 - 提升 iOS 应用安全性的关键步骤
|
10月前
|
移动开发 安全 数据安全/隐私保护
iOS代码混淆工具
🔒 这是一篇介绍iOS代码混淆工具的技术博客,旨在帮助开发者提高代码安全性。本工具来自于Github的混淆词库和代码,通过差异化处理和代码合并生成数亿种用于混淆的单词和垃圾代码,确保每次混淆不会出现重复,混淆后的代码跟手写没有任何区别,完美解决代码4.3和2.3.1问题。

热门文章

最新文章

  • 1
    苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
    57
  • 2
    苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
    46
  • 3
    uniapp云打包ios应用证书的获取方法,生成指南
    48
  • 4
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
    124
  • 5
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
    29
  • 6
    iOS各个证书生成细节
    43
  • 7
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    214
  • 8
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    66
  • 9
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    86
  • 10
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    68