iOS远程推送

来源:互联网 发布:淘宝网服饰长款线裙 编辑:程序博客网 时间:2024/04/29 02:34

参考:

SWIFT推送之本地推送(UILocalNotification)

手把手教你配置苹果APNS推送服务

iOS远程推送通知由远程服务器上的程序(可由任意语言编写)发送至APNs,再由APNs把消息推送至设备上对应的程序。

iOS远程推送通知的过程:

以上图示讲解:

1.Provider(服务器)程序把要发送的通知、目标iPhone的device token(相当于该设备的唯一标识)打包,发送给APNs。
2.APNs通过已注册Push服务的iPhone列表查找具有对应device token的iPhone,并把Push通知发送给对应的iPhone。
3.iPhone将收到的Push通知传递给对应的应用程序,并且按照设定弹出Push通知。

一.开发Push客户端应用

Push客户端应用需要三个组件:

  • APP ID(应用程序唯一标识)
  • Provisioning Profile
  • device token(当Push客户端应用注册Push推送通知成功时,APNs将会返回该设备的device token)

下面,一步一步地进行操作

1.生成”证书签名请求文件”,文件后缀名是.certSigningRequest,即CSR文件

打开”钥匙串访问”应用程序,按图示操作:

常用名称随意写一个,我这里以”flower”为例子

点击”继续”,会生成创建一个”Certificate Signing Request”证书签名请求文件。

生成的文件如下:

2.创建APP ID(要购买开发者账号)

进入https://developer.apple.com/account/overview.action,界面如下:

按照步骤”ios Apps —— Identifiers —– Apps IDs”:来到图示

点击+符号,添加:


注意:这里的Bundle ID和我们创建应用所用的Bundle Identifier要相同。

所以,我们在网站上创建的App ID是com.ccmobile.Flower

3.利用第1步产生的.CSR文件,为我们刚刚创建的App ID创建开发证书

可以修改我们的App ID配置文件,使其支持远程推送功能。

勾选”Push Notifications”后,会出现两个”Create Certificate…”。我们选择开发阶段的。(发布时当然要创建发布版本的)

上传.CSR文件,创建开发证书:

创建好后,如图

下载:

文件的后缀名是.cer,双击该文件,OS X 会自动打开”钥匙串访问”程序,将证书添加到系统中。

4.创建Provisioning Profile文件,选择Provisioning Profile的类型

点击+号可以添加:选择你想要创建Provisioning Profile的APP ID

进行一系列步骤,即可完成:

文件后缀名为:.mobileprovision

当然,我们还要在Xcode中进行配置:

下面开始在Xcode中写代码了:

Appdelegate.swift代码

import UIKit@UIApplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate {    var window: UIWindow?    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { //注册远程通知        application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes:  [UIUserNotificationType.Sound,UIUserNotificationType.Badge,UIUserNotificationType.Alert], categories: nil))            application.registerForRemoteNotifications()        return true    }  //通过该代理方法获取deviceToken    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {        print("\(deviceToken)")    }   //请求失败时调用该方法    func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {        print("error")    }    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {        print("\(userInfo.description)")    }    func applicationWillResignActive(application: UIApplication) {    }    func applicationDidEnterBackground(application: UIApplication) {    }    func applicationWillEnterForeground(application: UIApplication) {    }    func applicationDidBecomeActive(application: UIApplication) {    }    func applicationWillTerminate(application: UIApplication) {    }}

二.开发服务器端程序

我们可以在网络上找到各种语言编写的类来调用。

0 0
原创粉丝点击