`
jpush88
  • 浏览: 3611 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ios消息推送,体验心得分享

阅读更多
  本文章只提供学习!!

  iOS的消息推送(推送通知)有两种,一种是本地推送通知,另一种是远程推送通知。所谓本地推送通知就是使用代码推送消息到用户设备中提醒用户一些信息,推送形式请查看手机设置。远程推送通知是通过服务器发送消息到用户设备中,iOS的远程推送通知要经过苹果的服务器来推送消息,过程比较麻烦。下面是个人学习笔记,提供新手学习(当然我也是个新手),不能用于商业用途。

  所有的消息推送只在后台或者推出程序才有意义,程序在前台运行的时候是没有意义的,所有发送消息推送的时候请把程序退出或者挂在后台运行才能体现出效果。

  一、本地推送通知

  以下代码为了更好看到本地推送通知地效果最好写在一个按钮事件中,点击发送通知。

  

复制代码

  // 1.创建本地推送通知

  UILocalNotification *localNotification = [[UILocalNotification alloc] init];

  // 2.设置一些属性

  // 通知发出的时间(5秒后)

  localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

  // 设置时区(跟随手机的时区)

  localNotification.timeZone = [NSTimeZone defaultTimeZone];

  // 音乐文件名

  localNotification.soundName = @"xxxxx.wav";

  // 通知的内容

  localNotification.alertBody = @"内容";

  // 锁屏界面显示的标题 如下面的写法将显示:滑动来查看内容 格式:"滑动来" + 标题

  localNotification.alertAction = @"查看内容"

  // 设置app图标数字

  localNotification.applicationIconBadgeNumber = 10;

  // 设置通知的其他信息

  localNotification.userInfo = @{

  @"title" : @"好消息"

  };//可随意添加

  // 设置启动图片

  localNotification.alertLaunchImage = @"Default.png";

  // 设置重复发出通知的时间间隔

  // localNotification.repeatInterval = NSCalendarUnitMinute;

  // 3.发通知

  [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

  

复制代码

  //----------------------------------------------------------

  点击发送通知后把程序退出或者挂到后台,等待5秒就会有通知,如果觉得5太长或太短请根据个人需要该上面到代码。

  当用户点击通知进入app的时候或者程序运行在前台的时候会在appdelegate中调用下面这个方法

  - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

  如果想当app在前台的时候不做任何事情可以在上面的方法里面最前面加上这句代码:

  // 程序正处在前台运行,直接返回

  if (application.applicationState == UIApplicationStateActive) return;

  也可以在

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中判断是否是点击通知进入app,如下:

  

复制代码

  UILocalNotification *ln = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];

  if (ln) {

  //点击通知进入app

  } else {

  //点击app图标进入app

  }

  

复制代码

  二、远程推送通知

  做远程<a href="www.jpush.cn">消息推送</a>一定要用真机,模拟器不可以。需要到苹果开发者中心配置一些证书,过程比较多,我就不文字描述来了,直接看图片演示过程。

  1.首先在钥匙串中配置电脑签名文件

  



  



  邮件地址一般写公司的就好,选择存储到磁盘,继续。

  



  我就在桌面新建了个叫push到文件夹,点击存储。

  2.需要一个AppIDs

  (如果在测试阶段已经有了就不需要了,到时候直接用那个就可以,注意:AppIDs一定要是完整的,不能是xxx.xxx.* 做消息推送一定要是完整的ID),没有就弄一个,过程跟弄测试这书一样。反正做远程消息推送一定要真机测试,在做真机测试的时候已经有AppIDs了,这个过程就不贴出来了,不会的同学可以先去查看怎么配置真机测试证书。

  3.配置一个开发证书

  



  点击加号

  



  选择APNs 然后continue

  



  选择自己应用的AppID 之后continue 继续continue

  



  选择第一步的时候保存证桌面push文件夹中的电脑签名文件

  



  最好我开发证书也保存到push文件夹中,方便管理。

  4.接下来配置生产证书

  



  点击production 点击加号

  



  选择production中的APNs 接下来所有的步骤跟配置开发证书一模一样,就不一一贴过程来。

  5.这步骤才是最重要的。

  



  点击加号

  



  点击continue

  



  选择你应用的APP ID

  



  选择配置测试的时候生成的这书(本文没说明怎么配置测试证书,不知道请先查看如何配置测试证书)

  



  选择测试设备,全部选择都没关系

  



  按意起个名字就好了点击generate 下载到push文件夹中。

  6.安装所有到证书,可以直接拖到我到证书中

  



  



  



  导出开发证书

  



  起个名developmentPush,文件格式选择.p12

  



  我这里输入abcd1234,你们随意,记住就行。

  接下来也把生产证书导出来,我把名字起为productionPush,密码设置和开发证书一样(只是为了不混淆,不一样也可以),过程一样,就不贴图片了。

  到这里就要所有到准备工作做好了,接下来是测试。

  测试远程推送时候我是使用极光推送,你们有什么好的开源都可以使用。地址:www.jpush.cn ,注册个用户、登录。

  



  登录上去点击创建应用

  



  只要填写我选中都部分就可以了,开发证书就是developmentPush.p12文件,密码就是自己设置的密码。生产证书就是productionPush.p12文件。

  创建好之后会得到一个appkey 要记下来,没记住也没事,在选择应用中点击你添加的应用也可以看到。

  



  然后下载iOS SDK 地址:www.jpush.cn/common/products#product-sdk

  下载好之后把里面的lib文件夹添加到工程中

  



  接着在工程中创建plist文件

  


名字一定要是PushConfig.plist

  点击plist文件

  



  添加三个键值对,内容一定要一样,最后一个就是在极光推送创建应用的Appkey

  必要的框架

  CFNetwork.framework

  CoreFoundation.framework

  CoreTelephony.framework

  SystemConfiguration.framework

  CoreGraphics.framework

  Foundation.framework

  UIKit.framework

  Security.framework

  libz.dylib

  其中有3个是在创建工程的时候就用了,不需要重复添加

  然后在工程中的appdelegate中添加以下代码:

  #import "APService.h"

  在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中添加以下代码:

  

复制代码

  // Required

  #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1

  if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

  //可以添加自定义categories

  [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |

  UIUserNotificationTypeSound |

  UIUserNotificationTypeAlert)

  categories:nil];

  } else {

  //categories 必须为nil

  [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |

  UIRemoteNotificationTypeSound |

  UIRemoteNotificationTypeAlert)

  categories:nil];

  }

  #else

  //categories 必须为nil

  [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |

  UIRemoteNotificationTypeSound |

  UIRemoteNotificationTypeAlert)

  categories:nil];

  #endif

  // Required

  [APService setupWithOption:launchOptions];

  

复制代码

  //----------------------------------------------------

  最后添加以下方法:

  

复制代码

  #pragma mark - 获取DeviceToken

  - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

  // Required

  [APService registerDeviceToken:deviceToken];

  }

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

  // Required

  [APService handleRemoteNotification:userInfo];

  }

  - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

  // IOS 7 Support Required

  [APService handleRemoteNotification:userInfo];

  completionHandler(UIBackgroundFetchResultNewData);

  }

  

复制代码

  这样就大功告成了,用真机运行你的程序,然后退出程序,或者挂到后台。

  这么发送通知呢?在极光推送平台点击你创建的应用,点击推送,发送通知

  



  好了,完成。如果从下载iOS SDK开始就不懂的同学可以查看教程,地址:http://docs.jpush.io/guideline/ios_guide/

  上面整个教程在极光推送平台也有教程。

  以上的文章只是我个人学习笔记,有什么错误的地方请不要喷,请您提出来让我改正,写博文不易,请不要乱复制拷贝别人的心得为自己的东西,感谢大家。
分享到:
评论

相关推荐

    ios学习总结

    3. 推送通知:集成Apple Push Notification服务,实现远程推送通知功能。 4. UI动画:利用Core Animation创建流畅的过渡效果和动画,提升用户体验。 5. In-App Purchase:学习内购机制,实现应用内购买功能。 6. ...

    一款推送优质教育资源APP的设计与构建.pdf

    《一款推送优质教育资源APP的设计与构建》这篇文档探讨了如何设计和构建一款专注于推送优质教育资源的移动应用程序。文章首先分析了APP开发的技术需求,主要介绍了四种常见的开发模式:原生应用开发(包括Android的...

    IOS-风格APP软 件介绍.ppt

    - **还书提醒**:通过推送通知,APP会在书籍到期前及时提醒用户归还,避免罚款。 - **论文收藏**:用户可以收藏重要的学术论文,便于日后查阅。 - **自习室座位查询**:允许用户查找并预订图书馆内的自习座位,...

    iOS开发:从入门到精通的指南.docx

    - 利用Local Notification推送提醒。 ##### 3. 健身追踪应用 - **功能实现**: - 记录用户的运动数据,如步数、距离、卡路里消耗等。 - 提供运动目标设定和个人进度跟踪。 - 根据用户身体状况提供健康建议。 - ...

    1学习心得Twitter正式向移动端推定制广告投放.pdf

    1. **操作系统定向**:广告主现在可以根据用户使用的不同操作系统(如iOS和Android)来定制广告内容,这意味着广告商可以更有针对性地向特定平台的用户推送符合他们习惯和兴趣的广告,从而提高广告的点击率和转化率...

    Sukutomo-iOs:学园偶像Tomodachi的iOs应用程序

    Sukutomo-iOs可能集成了Facebook、Twitter或其他社交网络的SDK,让用户可以分享成就、交流心得。同时,也可能包含内置的聊天系统,这需要用到推送通知和即时通讯技术。 7. **性能优化与测试** 为了确保应用在不同...

    PunkRockAcademy_iOS:得到你的朋克修复。 发现他人的影响。 – 在您的 iOS 设备上!

    5. **活动通知**:及时推送朋克音乐会和音乐节信息,让用户体验现场的激情。 通过PunkRockAcademy_iOS,iOS用户将有机会沉浸在朋克音乐的世界里,发现那些未曾注意到的音乐细节,理解朋克音乐如何影响并塑造了现代...

    游戏陪玩平台源码美女玩网站源码自适应可封装APP

    - APP封装通常涉及将Web应用转换为原生移动应用的过程,这样可以充分利用移动设备的特性,如推送通知、离线缓存等。 5. **视频搭建教程**: - 提到的“视频搭建教程已上传QQ群”表明,为了帮助用户更好地理解和...

    大学生创新创业大赛项目计划书.docx

    1. **个性化定制**:根据每个粉丝的喜好提供个性化的偶像信息推送,打造专属的追星体验。 2. **全面的活动信息**:及时更新偶像的日程,包括航班、签售会、演唱会等,方便粉丝参与。 3. **互动平台**:创建安全、...

    服装行业APP开发解决方案.rar

    4. 个性化推荐:基于用户购物历史和行为数据,推送个性化商品推荐。 5. 位置服务:集成地图API,显示附近实体店位置,提供导航服务。 6. 优惠券与积分系统:设置优惠券领取、使用规则,推行积分制度,激励用户消费。...

    影音娱乐彩森视频网络电台DQUS版-dqus.zip

    3. **个性化推荐**:根据用户的喜好和浏览历史,可能会有智能化的推荐系统,推送符合用户口味的内容。 4. **社交互动**:可能包含社区功能,用户可以与其他听众交流,分享心得,参与讨论。 5. **离线缓存**:为了...

    FoodieApp:美食食谱社交网络应用

    Firebase API是Google提供的一个全面的后端平台,为开发者提供了包括身份验证、实时数据库、云存储、消息推送等一系列服务。在FoodieApp中,Firebase Authentication可能被用于用户注册和登录,确保用户信息安全。...

    创业计划书-APP移动应用-美食俱乐部APP产品策划书

    - **个性化推荐**:根据用户的喜好和行为习惯,推送定制化的菜谱和餐厅信息。 4. **技术实现**: - **前端开发**:使用React Native或Flutter等跨平台框架进行APP开发,确保在iOS和Android上具有良好的用户体验。...

    红雨同学录精彩版

    - **通知系统**:及时提醒用户新消息、活动等,可能涉及到推送服务的集成。 通过这些知识点,我们可以推测“红雨同学录精彩版”是一个结合了社交网络技术和同学情谊的平台,不仅提供了基本的沟通工具,还可能有丰富...

    行业分类-设备装置-社区老人餐互助平台.zip

    2. 后端服务器:采用云计算服务(如阿里云、AWS等)搭建后端服务器,处理用户请求、存储数据、推送通知等。 3. 数据库管理:使用关系型数据库(如MySQL、PostgreSQL)或非关系型数据库(如MongoDB)存储用户信息、...

    大型门户股票全站程序

    5. **资讯服务**:集成新闻聚合功能,推送财经新闻、公司公告、政策法规等,帮助用户了解市场动态。 6. **个性化定制**:用户可以根据自己的喜好和需求设置关注的股票、自定义预警条件,实现个性化投资体验。 7. *...

    esport-conenct-mvp:电子竞技

    例如,增加社交功能,让用户可以交流比赛心得,分享精彩瞬间;或者引入虚拟现实和增强现实技术,提升观赛体验;甚至与电竞战队和赛事组织者建立合作,提供更深度的赛事数据和独家内容。 总结,"esport-connect-mvp...

    Ratty:素食饭抓饭的应用

    二是个性化推荐,根据用户的饮食偏好和历史记录,推送适合的食谱;三是社交互动,用户可以分享自己的素食制作心得,与其他素食爱好者交流互动;四是食材购买指南,链接到线上超市或市场,方便用户一键购买所需食材。...

    微信小程序在国家开放大学分校中的应用.pdf

    6. 个性化推荐:根据学生的学习行为和偏好,推送个性化的学习建议和课程推荐,提升学习效果。 7. 活动报名与管理:组织线上线下的学术讲座、社团活动,通过小程序进行报名和参与,方便快捷。 总的来说,微信小程序...

Global site tag (gtag.js) - Google Analytics