ios消息推送 - Gen_0

标签: ios 消息 推送 | 发表时间:2015-06-01 00:50 | 作者:Gen_0
出处:

本文章只提供学习!!

      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

    }

 

二、远程推送通知

做远程推送一定要用真机,模拟器不可以。需要做苹果开发者中心配置一些证书,过程比较多,我就不文字描述来了,直接看图片演示过程。

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

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

必要的框架

  • CFNetwork.framework
  • CoreFoundation.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • Foundation.framework
  • UIKit.framework
  • Security.framework
  • libz.dylib

然后在工程中的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消息推送,转载请注明。

相关 [ios 消息 推送] 推荐:

ios消息推送 - Gen_0

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

iOS及Android消息推送方案安装使用入门

- - 乐无线-无线互联网观察
iOS消息推送直接使用苹果消息推送协议,服务器端采用easy apns: http://www.easyapns.com/. Android消息推送采用MQTT协议,服务器端采用mosquito+PhpMQTTClient  . 1 、      iOS 消息推送. 1.0 、消息推送证书生成.

android平台消息推送机制

- - ITeye博客
方案1、使用GCM服务(Google Cloud Messaging). 简介:Google推出的云消息服务,即第二代的G2DM. 优点:Google提供的服务、原生、简单,无需实现和部署服务端. 缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google.

Spring+Websocket实现消息的推送

- - Java - 编程语言 - ITeye博客
本文主要有三个步骤 1、用户登录后建立websocket连接,默认选择websocket连接,如果浏览器不支持,则使用sockjs进行模拟连接 2、建立连接后,服务端返回该用户的未读消息 3、服务端进行相关操作后,推送给某一个用户或者所有用户新消息 相关环境 Spring4.0.6(要选择4.0+),tomcat7.0.55.

苹果开始推送 iOS 6.0.1 固件更新

- - 果迷网
苹果已经向 iOS 用户推送了最新的 iOS 6.0.1 更新,主要修正了此前用户反馈较多的键盘横线和闪关灯无法关闭问题,同时修复了 iPhone 5 无法通过无线方式进行软件更新的问题. 有意思的是,对于存在“无法以无线方式安装软件更新的问题”的 iPhone 5 用户来说,会发现软件更新的“下载并安装”按钮是灰色的……因此在进行软件更新之前需要按提示(设置-通用-软件更新-了解更多)下载并安装一个名为“iOS Updater”的安装器应用;安装完成并打开它就会自动跳转回软件更新界面按正常步骤进行软件更新.

[绍棠] iOS远程推送原理及实现过程

- - CSDN博客推荐文章
推送通知,是现在的应用必不可少的功能. 那么在 iOS 中,我们是如何实现远程推送的呢. iOS 的远程推送原理又是什么呢. 在做 iOS 远程推送时,我们会遇到各种各样的问题. 那么首先让我们准备一些做推送需要的东西. 我们需要一个付费的苹果开发者账号(免费的不可以做远程推送),有了开发者账号,我们可以去苹果开发者网站,配置自己所需要的推送的相关证书.

苹果iOS系统下的推送机制及实现

- - IT技术博客大学习
标签:   push   推送. 原文由iOS教程团队 Matthijs Hollemans 撰写,经原网站管理员授权本博翻译. 在iOS系统,考虑到手机电池电量,应用不允许在后台进行过多的操作,当用户未开启应用时,要怎么样才能通知用户呢. 好比用户收到一个新的微博、喜欢的球队取得一场胜利或者是晚餐准备好了,如果应用都不在运行当中,当然也就无法去获得这些事件.

推送通知iOS客户端编写实现及推送服务器端编写

- - CSDN博客移动开发推荐文章
推送通知技术在Mac OS X和iOS系统上都可以运行,我们本章主要介绍iOS客户端编程,推送通知的编程比较简单,编程的关键是获得令牌,这是从APNS返回的,然后还有把提交给内容提供商. 下面我们看看开发之前的一些准备工作. 编写iOS推送应用需要在Xcode工程中进行一些配置,这些配置是主要是设置代码签名标识,代码签名标识的前提要有配置概要文件(Provisioning Profiles).

物联网核心协议,消息推送技术演进

- - 博客 - 伯乐在线
消息触达能力是物联网(internet ofthings, IOT)的重要支撑,而物联网很多技术都源于移动互联网. 本文阐述移动互联网消息推送技术在物联网中的应用和演进. 从开发的角度,无线接入是物联网设备端的核心技术,身份设备管理和消息推送技术是物联网云端的核心技术. 而从场景体验的角度,除了前者,还要包括手机的前端开发技术.

6分钟带你全面了解App消息推送策略

- - IT瘾-tuicool
在一个移动操作系统中,APP可以实现一个叫做消息推送(push)的功能. push是能够起到提醒或者唤醒用户的作用的,也是app运营渠道之一,运用得当可以帮助产品运营人员更高效地实现运营目标,相反盲目运用也会让APP变得让人讨厌. 今天我们聊聊聊APP消息推送那些策略. 有不少小伙伴私信问我如何写文章的,其实很简单,我写文也不是逻辑非常明确,也不是非常符合所谓金字塔原则的(其实用麦肯锡那一套写出的文章真的会很严谨,但是呢,我就是很随意),我会在写作之前列出文章的核心框架,然后在框架下填补内容即可,今天我就把这篇文章写文的框架先分享给大家吧.