APNS部署教程3(APP开发)

本文是2016年9月的APNS部署教程,使用XCODE 7.3.1和SWIFT 3.0等环境,详细介绍了如何配置XCODE项目、注册远程推送、获取DeviceToken以及使用Easy APNs测试推送。教程还强调了DeviceToken的变化情况和接收到推送消息后的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列教程写于2016年9月,所用开发环境是
XCODE(7.3.1),
SWIFT(3.0),
PHP(5.5.36),
APACHE(2.4.18)
禁止转载!


如果在看这篇教程之前,如果没有看过前面的章节,你可以回去看看一看前面的章节


用XCODE打开我们之前创建的APNsDemo,先进行一项配置然后进入Coding阶段
这里写图片描述
左边点击项目名称->选择Build Settings->找到Code Signing这一栏->点击Provisioning Profile属性点击右边的上下箭头弹出选择框->选择我们在上一章创建的配置文件(如果你没有改名字的话,应该叫做APNsDemoProfile)

如果你在弹出框里没有找到这个配置文件,那么就去APNsDemoFiles文件夹找到你下载的配置文件,然后双击将它安装到本地,再回到XCODE里面它就会出现了

现在XCODE的项目配置没有问题了,我们可以写一些代码了,首先,打开AppDelegate.swift,找到application(:didFinishLaunchingWithOptions)这个函数,将这个函数改写成如下形式

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        //初始化一个通知类型集合,这个集合中包括:提醒Alert、图标右上角的徽章Badge、声音Sound
        let types: UIUserNotificationType = [UIUserNotificationType.Alert,UIUserNotificationType.Badge,UIUserNotificationType.Sound]
        //初始化通知设置
        let setting = UIUserNotificationSettings(forTypes: types, categories: nil)
        //注册一个通知设置
        UIApplication.sharedApplication().registerUserNotificationSettings(setting)
        //注册一个远程通知
        UIApplication.sharedApplication().registerForRemoteNotifications()

        return true
    }

如上面注释一样,这四句话对APP的远程推送功能进行了注册,前提是当程序提示我们是否允许远程推送的时候我们要点击允许

现在将测试用的IPhone(就是在证书那一章你用来读取UDID的那台设备)连接到你正在开发的MAC上,然后在XCODE左上角设备选择那里选择这台真实的设备
这里写图片描述

然后运行程序,在IPhone上会看到这样的提示,这说明我们申请远程推送设置成功了,由于我的手机是英文环境,如果是中文环境这个提示应该是中文的
这里写图片描述

回到 AppDelegate.swift ,现在注册成功了远程推送,还要获取这个APP的DeviceToken,我会在程序里加入下面几个代理函数,来获取远程通知的回调函数,这些代理函数的定义都是继承自’UIApplicationDelegate’这个类的

//注册成功并返回deviceToken值
    func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
        print(deviceToken)
    }
//接收到推送通知 并返回userInfo    
    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
        print(userInfo)
    }
//注册远程推送失败并返回错误消息
    func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
        print(error)
    }

有这三个函数就够了,在这三个函数里面,我分别在控制台打印出了deviceToken、userInfo、error,当然如果注册成功的话是不会调用第三个函数了,而第二个函数也仅是在有远程推送到达并且APP程序在后台或前台运行的时候才会调用,那么如果APP程序退出后接收到推送通知会怎么样呢?如果你不点击通知,那么APP不会启动,如果你点击了通知,APP会启动,并且运行application(:didFinsihLaunchingWithOptions)这个函数,而不会运行application(:didReceiveRemoteNotification)这个函数,这点大家要注意。
但是不管如何,application(:didRegisterForRemoteNotificationsWithDeviceToken)这个函数是每次注册成功都会运行的,都会返回一个DeviceToken,为什么要说每次呢?是因为这个DeviceToken不是一直不变的,当你卸载APP重新安装、更新系统等一些情况下,都会有可能重新获取一个DeviceToken,之前的那个肯定就没有用了,这时候上面这个代理函数就会运行。

现在重新运行程序,注意XCODE的控制台输出,应该是这样的
这里写图片描述
这个64位的16进制编码就是我们打印出来的deviceToken,保存下来,一会我们会用到的。

APP客户端的程序写到这里就够了,具体接收到推送消息如果处理不在这篇教程的范围内了,下面我将用一个第三方软件测试一下我的APP是否真的可以接收到远程通知,下一章再详细的讲解如何自己写一个服务器端(provider)


打开APP Store(我指的是mac上的,不是IPhone),搜索easy apps,这个东西,下载下来
这里写图片描述

打开这个软件,点击Add tokens… ,把刚才记下来的device token加进去,起一个名字叫test吧,注意如果你复制粘贴的时候中间有空格是不行的,提前把空格括号什么的都删掉,只留下64位16进制数就好了,加进去后注意外面还有一个”Choose Certificate File” 点击这个按钮,选择APNsDemoFiles文件里面的apns_development.cer文件,如果你没有这个文件了,那么就去苹果开发者中心的证书栏里重新下载下来吧,这个文件是你进行远程推送的认证证书,接着点击Connect to…,注意右边那个服务器要选择gateway.sandbox.push.apple.com(沙盒测试服务器),如果连接成功会像是下面这样
这里写图片描述

右上角PlayLoad那一栏是设置PlayLoad的,PlayLoad你可以理解为就是消息推送的内容,JSON格式的,规定了消息的内容,声音,右上角显示的数字这些内容,具体看这里

然后点击Send APN,发送消息,如果你IPhone上的APP是在前台,是看不到推送消息的,你需要关闭它或者把它放在后台才能看到推送消息。如果esay apns告诉你消息发送失败,请检查你的证书配置和Device Token配置。

这里写图片描述

客户端编写到这里就结束了,下一章我们将讲解利用Apache+mysql+php构建一个简单的Provider

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值