ios消息推送 - Gen_0

标签: ios 消息 gen_0 | 发表时间:2015-05-31 16: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 消息 gen_0] 推荐:

ios消息推送 - Gen_0

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

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

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

iTV来敲门:多方消息显示苹果正在开发基于iOS系统的电视机(非机顶盒)

- pestwave - 36氪
苹果桌面操作系统和移动操作系统大统一的迹象越来越明显. 昨天我们刚刚讨论过苹果的下一个目标是什么,其中提到的第一点就是再造电视机,今天来自硅谷的多个来源称苹果正在开发一款基于iOS操作系统的电视机. 八月初,我们曾报道iOS和OS X可能将在明年开始合并:. 前不久发布的Mac OS X Lion很多地方都借鉴了iOS的风格.

[IOS]iOS App性能优化

- - 操作系统 - ITeye博客
iOS App的性能关注点. 虽然iPhone的机能越来越好,但是app的功能也越来越复杂,性能从来都是移动开发的核心关注点之一. 我们说一个app性能好,不是简单指感觉运行速度快,而应该是指应用启动快速、UI反馈响应及时、列表滚动操作流畅、内存使用合理,当然更不能随随便便Crash啦. 工程师开发应用时除了在设计上要避免性能“坑”的出现,在实际遇到“坑”时也要能很快定位原因所在.

iOS 5评测

- littlepush - Solidot
Ars Technica的评测认为iOS 5值得升级,当然它也不可避免的存在一些小问题,给用户增添些烦恼. 用户在升级前最好手动备份一下iDevice,确保所有的应用都能转移.

关于iOS 7

- - 曉生
上手使用2天,感觉ios7的方向挺对,有设计的不错的地方,比如系统功能交互的完善和动效细节. 但界面有不够完善之处,比如颜色不够统一,难以理解相机和设置为什么用那么难看的渐变灰色,控制中心太像交互原型图,更主要是功能缺乏分类,但相信这只是beta版的问题,就像ios7运行还不够流畅一样,都还需要时间去完善.

[转]WebKit in iOS 8

- - justinjing的专栏
让我们说说iOS 8 的WebKit吧. WWDC 2014前几天,就有人发现了苹果向WebKit开源项目提交了一些很令人兴奋的代码,暗示了OS X和iOS,特别是iOS上的WebKit架构有所变化. 果不其然,WWDC上公布了iOS的新框架WebKit.framework,正式推出了新的网页浏览控件WKWebView.

Adobe Reader for iOS发布

- laguna - Solidot
tbw 写道 "Adobe也许在计算机桌面的PDF市场占统治地位,但是,Adobe基本上把iPhone和iPad等移动设备的PDF市场留给了竞争对手,如GoodReader和苹果的iBooks. Adobe在公司博客中宣布,它已推出iPhone和iPad通用的“Adobe Reader for iOS”软件.

iOS Web App初步

- - 新浪UED
iOS Web App开发,配合HTML5,是目前比较热门的话题. 今天,先抛开HTML5,我们来尝试在PhoneGap框架上进行简单的开发. PhoneGap是一个使用HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台. 它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry等智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能.

iOS开发资源

- - Starming星光社最新更新
iOS App UI 欣赏、分享精美的App界面设计. iOS代码实例搜索、iOS特效示例、iOS代码例子下载. 以web的形式提供iOS UI设计的素材,你可以在web上拖动一些控件做出简单的ios 应用效果,并且生成一个URL,能分享给其他人. 一款 Photoshop 插件,由 UI Parade 推出的一款针对iOS UI 的设计工具,设计师动动鼠标即可制作精美的 iOS 应用原型.