使用back4app轻松实现iOS推送通知

介绍

在本教程中,我将向您展示如何使用基于云的第三方后端服务在iOS应用中轻松实现推送通知。 我们将首先查看所有iOS应用程序实现推送通知的必要步骤,然后将back4app(基于Parse平台)用作我们的后端服务。

您还需要一台物理iOS设备来运行您的应用程序。 这是因为iOS模拟器不支持推送通知。

1. iOS应用设置

首先,打开Xcode并基于iOS>应用程序> Single View Application模板创建一个新项目:

应用模板

在下一个屏幕上,填写完所有信息(可以使用与我相同的信息)后,请确保记下捆绑标识符,因为稍后我们将需要它:

应用信息和捆绑包标识符

Xcode创建项目后,打开您的AppDelegate.swift文件,并在顶部添加以下代码行:

import UserNotifications

接下来,将application(_:didFinishLaunchingWithOptions:)方法替换为以下内容:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    
    let center = UNUserNotificationCenter.current()
    let options: UNAuthorizationOptions = [.alert, .badge, .sound]
    center.requestAuthorization(options: options, completionHandler: { authorized, error in
        if authorized {
            application.registerForRemoteNotifications()
        }
    })
    
    return true
}

使用此代码,我们请求用户允许使用UserNotifications框架显示通知。 如果用户接受此请求,则我们将通过调用registerForRemoteNotifications方法来注册远程(推送)通知。

对于应用程序设置的最后一步,单击Xco​​de的File Navigator顶部的项目名称,然后转到Capabilities选项卡。 在此屏幕上,打开“ 推送通知”开关以将适当的权利添加到您的应用程序:

推送通知权利

2.证书设置

苹果推送通知服务

在基本级别上,iOS的推送通知系统通过以下步骤工作:

  • 第三方服务器将通知有效载荷发送到Apple Push Notification Service(APN)。
  • APN会验证有效负载以确保其来自合法来源。
  • 如果有效,则APNs然后将有效负载转发到正确的iOS设备。

为了正确地验证通知有效负载,您必须创建签名证书 。 要开始创建此证书的过程,您将需要使用Apple ID在Apple的开发人员网站上登录

注册应用程序标识符

登录后,单击左侧边栏中的证书,ID和配置文件

开发人员门户侧栏

在下一个屏幕上,选择左侧边栏中的标识符>应用ID ,然后单击右上角的加号按钮:

添加新的iOS应用ID

创建应用程序标识符时,您可以在“ 应用程序ID描述”部分中输入您想要的名称 。 在App ID后缀部分,选择明确的App ID选项,并输入包的标识 ,创建项目进入包ID字段时所做。 最后,在“ 应用程序服务”部分中,确保选中复选框选项以启用“ 推送通知” 。 输入所有信息后,向下滚动到页面底部,然后选择继续按钮。

现在,将为您提供新应用ID的概述,如以下屏幕截图所示:

应用程式编号总览

检查所有信息是否正确(在此阶段,“ 推送通知”应显示为Configurable ),然后单击屏幕底部的“ 注册 ”。

创建证书

转到左侧边栏中的证书 ,然后再次单击右上角的加号按钮。 在下一个屏幕的“ 开发”部分中,选择“ Apple Push Notification服务SSL”(沙盒)选项,然后单击底部的“ 继续 ”。

在下一个屏幕上,从下拉菜单中选择您的应用ID,然后点击继续

如果您还没有证书签名请求(CSR)文件,请按照下一个屏幕上的说明创建一个。 准备好CSR后,您可以继续下一个屏幕并上传。

创建证书后,单击“ 下载”按钮,然后使用计算机上的“ 钥匙串访问”应用程序打开文件。 如果询问您将证书添加到哪个钥匙串,请选择登录选项。

仍在“ 钥匙串访问”应用中,选择 左侧边栏底部的“ 证书”选项:

钥匙串访问侧栏

现在,您将需要查找刚刚制作的证书; 它的名称将为Apple Development IOS Push Services:{Bundle ID} 。 找到证书后,右键单击此密钥,然后选择“ 导出”选项。 在出现的弹出窗口中,您可以随意调用该文件,但请确保将文件格式设置为Personal Information Exchange(.p12)

证书导出选项

导出证书时,请勿提供p12文件的密码。 这是因为back4app需要没有密码保护的证书文件。

Apple Push Notification服务具有两个独立的环境:一个用于开发中的应用程序,另一个用于生产中的应用程序。

到目前为止,我们已经创建了用于开发环境的证书,该证书将在通过Xcode测试您的应用程序时起作用。

在App Store上发布应用程序时,您将需要创建生产证书。 为此,重复我们在本教程的“ 创建证书”部分中执行的步骤,但是选择Apple Push Notification服务SSL(沙盒和生产) 。 请注意,在“ 钥匙串访问”中 ,证书的名称为: Apple Push Services:{Bundle ID}

请注意,您可能不需要创建两个单独的证书,具体取决于您所使用的推送通知实现。 自今年早些时候以来,Apple允许创建双重用途证书-Apple Push Notification服务SSL(沙盒和生产)类型,可用于连接到两个环境。 不幸的是,尚未更新某些服务(例如back4app)以利用这些新证书,并且需要针对每个环境的专用证书。

3. back4app设置

在本教程中,我们将使用back4app提供推送通知的服务器端实现。 back4app是一项服务,可为您的应用程序提供易于使用的免费后端(有限制)。 它充当Parse Server项目的托管服务器。

要使用back4app进行设置,您需要转到back4app.com并注册一个帐户(如果尚未注册)。

注册后,您将进入一个空白屏幕,在该屏幕上将显示所有应用程序。 要创建一个新应用,请单击左上角的“ 构建新的解析应用”按钮。 在下一个屏幕上,输入您的应用程序的名称,然后单击“ 下一步”

创建您的应用程序后,您将进入带有大量不同标识符和键的屏幕。 我们需要注意的是应用程序ID解析API地址客户端密钥 。 获得这些副本后,您可以单击页面底部的“ 关闭”按钮。

现在,您应该在应用程序的主仪表板屏幕上。 为了设置推送通知实施,请转到iOS推送通知设置页面。 在这里,按下“ 选择文件”按钮,并上传您之前创建的.p12文件。 单击“ 发送”,然后您的捆绑ID将显示在列表中,如以下屏幕截图所示:

上传的证书信息

4.解析SDK设置

作为设置的最后阶段,我们需要下载Parse SDK并将其添加到我们的应用程序中。 为此,您可以按照back4app的iOS 快速入门指南的前三个步骤进行操作。

完成Parse SDK的设置并将所需的配置代码添加到application(_:didFinishLaunchingWithOptions:)方法后,将以下方法添加到AppDelegate类:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let installation = PFInstallation.current()
    installation?.setDeviceTokenFrom(deviceToken)
    installation?.saveInBackground()
}

如果用户接受您的应用程序显示通知的请求,则将调用此方法。 具体来说, registerForRemoteNotifications方法我们之前在我们的应用程序代表呼吁将调用application(_:didRegisterForRemoteNotificationsWithDeviceToken:)方法一旦完成处理。 在此方法的实现中,我们仅获取设备数据并将其上传到back4app Parse应用程序。

5.发送通知

现在,我们所有的设置均已完成,您可以在iOS设备上构建并运行您的应用程序。 应用打开后,您将看到以下警报:

通知授权警报

点按“ 允许”按钮,您的应用程序将自行注册以接收远程通知。

现在,您可以转到应用程序的“ 分析仪表板 ”。 进入应用程序的信息中心后,请点击左侧边栏中的Core (如果尚未选择)。 扩展“ 核心”部分后,您将可以查看应用程序的安装对象总数。 目前,这应该显示为1,如以下屏幕截图所示:

解析仪表板安装对象计数

如果该数字仍为0,则需要返回并检查是否已将所有代码正确复制到AppDelegate类中,包括back4app应用程序标识符和客户端密钥。

确保您的应用已将其安装数据保存在Parse之后,请转到Parse仪表板左侧栏中的“ 推送”部分。 现在,您应该在一个可以发送自己的自定义通知的屏幕上。 现在,您可以保留所有设置,仅在“ 编写您的消息”子标题下键入自定义消息。

准备就绪后,锁定iOS设备的屏幕,然后按Parse Dashboard右下角的Send按钮。 几秒钟后,您应该看到推送通知出现在锁定屏幕上:

成功推送通知

结论

恭喜你! 您已成功为iOS应用程序设置了推送通知! 如您所见,除了繁琐的SSL证书创建之外,使用诸如back4app之类的服务还使实现推送通知变得非常容易。

当然,除了back4app之外,还有其他一些可用于推送通知的服务,包括Backendless ,Google的Firebase甚至苹果自己的CloudKit 。 我选择back4app用于本教程,因为大多数推送通知设置都遵循类似的过程。 它还提供了许多其他出色的免费功能 ,任何应用程序都可以利用。

翻译自: https://code.tutsplus.com/tutorials/easy-ios-push-notifications--cms-27934

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 zmq C++ 库实现推送多条-多条拉取模式的例子,使用了迭代器来遍历消息: **Pusher.cpp** ```cpp #include <zmq.hpp> #include <iostream> #include <string> #include <vector> int main() { zmq::context_t context(1); zmq::socket_t pusher(context, ZMQ_PUSH); pusher.bind("tcp://*:5555"); std::vector<std::string> messages = {"message 1", "message 2", "message 3"}; for (auto it = messages.begin(); it != messages.end(); ++it) { zmq::message_t message(it->size()); memcpy(message.data(), it->data(), it->size()); pusher.send(message, it == messages.end() - 1 ? 0 : ZMQ_SNDMORE); std::cout << "Sent message: " << *it << std::endl; sleep(1); } return 0; } ``` **Puller.cpp** ```cpp #include <zmq.hpp> #include <iostream> #include <string> #include <vector> int main() { zmq::context_t context(1); zmq::socket_t puller(context, ZMQ_PULL); puller.connect("tcp://localhost:5555"); std::vector<std::string> messages; while (true) { zmq::message_t message; puller.recv(&message); std::string msg(static_cast<char*>(message.data()), message.size()); messages.push_back(msg); int more = 0; size_t more_size = sizeof(more); puller.getsockopt(ZMQ_RCVMORE, &more, &more_size); if (!more) { for (auto it = messages.begin(); it != messages.end(); ++it) { std::cout << "Received message: " << *it << std::endl; } messages.clear(); } } return 0; } ``` 运行 Pusher.cpp 和 Puller.cpp,你就可以在控制台上看到推送的消息和拉取的消息了。这个例子中,Pusher 会向 Puller 推送多条消息,Puller 则会一直拉取并输出收到的所有消息。注意,在发送消息时需要使用 `ZMQ_SNDMORE` 标志来告诉 ZeroMQ 还有更多的消息要发送。在接收消息时,需要使用 `ZMQ_RCVMORE` 标志来判断是否还有更多的消息没有接收完。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值