如何为 iOS 应用程序创建后台?
iOS 应用程序与网络应用程序一样,需要某种方式来存储和跟踪数据。无论数据是存储在云后台服务还是本地构建的个人运行服务器上,后台对于管理用户数据都是必不可少的。
然而,从零开始为 iOS 应用程序构建后台可能是一项艰巨的任务,尤其是如果您是 iOS 开发和后台开发的新手。
在本教程中,您将学习如何为 iOS 应用程序构建后台。首先,我们将概述 iOS 开发,并讨论其优点和局限性。
然后,您将探索可供您选择的不同后端。最后,您将学习如何使用 Back4App(后端即服务 (BaaS))作为 iOS 应用程序的后端。
Contents
iOS 概述
苹果公司开发了 iOS 作为主要操作系统,为 iPhone、iPad 和 iPod Touch 设备上的移动应用程序提供动力。
iOS 应用程序使用两种编程语言编写,即 Objective-C 和最近的 Swift。
在 2014 年推出 Swift 之前,Objective-C是 iOS 应用程序开发的主要语言。Swift被设计成一种更现代、更友好的语言,具有类型推断和可选项等功能,使其更易于阅读和编写。
两种语言可在同一项目中使用。这是因为,根据 Swift文档,Swift 在设计上与 Objective-C 兼容,可用于与现有的 Objective-C 遗留代码交互。
要构建 iOS 应用程序,Apple 提供了集成开发环境 (IDE)Xcode,在这里您可以方便地编写代码、构建和开发 iOS 应用程序。
开发 iOS 应用程序的好处
作为开发人员,开发 iOS 应用程序可以在以下方面获益:
高质量的用户体验
iOS 应用程序以其卓越的用户体验而著称,其直观、精美的设计让用户觉得既吸引人又易于使用。
他们制定了专门的应用程序设计准则,强调简洁、清晰和一致性,以实现最佳的用户体验。这样设计出的应用程序具有视觉吸引力,其控件和布局能让用户轻松找到所需内容并快速完成任务。
此外,苹果还为开发者提供了一整套设计工具和资源,帮助确保他们的应用程序达到最高质量标准。
iOS 应用程序还针对苹果设备的特定硬件和软件进行了优化,从而实现了快速的性能、流畅的动画和高质量的图形。
更好的安全性
iOS 应用程序的另一个重要优势是其提供的安全级别。这归功于几个因素,主要是苹果公司严格的 App Store 审核流程、强大的加密功能和注重隐私的功能。
App Store 审核流程旨在确保所有 App Store 应用程序符合严格的内容和安全准则。这包括检查恶意代码、恶意软件和其他潜在的安全威胁。
因此,iOS 应用程序不太可能包含有害代码或被用于网络钓鱼攻击或其他恶意活动。
跨设备的一致性
iOS 应用程序的外观和功能在所有苹果设备上都是一样的,包括 iPhone、iPad 和 iPod Touch。
这种一致性使用户可以轻松地在不同设备之间转换,而无需学习新的用户界面或导航系统。它还确保应用程序开发人员能够设计和构建可在所有设备上无缝运行的应用程序,而无需担心兼容性问题或特定设备的功能。
开发人员工具
Apple 为 iOS 开发人员提供了强大的工具,使开发、测试和调试 iOS 应用程序变得更加容易。
这些工具包括 iOS SDK、Xcode 以及一系列其他工具和资源,可帮助优化开发人员的体验和所开发应用程序的质量。
开发 iOS 应用程序的局限性
iOS 开发体验并非完美无瑕。在开发 iOS 应用程序时,您会遇到一些限制。其中包括
有限的设备兼容性
开发 iOS 应用程序时遇到的一个主要问题是设备兼容性不足。当今世界有各种各样的移动设备制造商,同样也有各种各样的专门用户。
不过,iOS 应用程序只能在苹果公司自己的硬件上运行。这意味着应用程序只能在 iPhone、iPad 和 iPod Touch 设备上使用。这就限制了您所创建应用程序的潜在受众,使其仅限于苹果生态系统。
虽然苹果公司拥有庞大的用户群,但如果你希望接触到苹果公司以外的更多受众,iOS 应用程序有限的设备兼容性可能会成为你的劣势。
应用程序商店审批流程
众所周知,苹果应用商店的审核过程非常严格,比 Google Play 等其他应用商店耗时更长。
审核过程旨在确保 App Store 上的所有应用程序都符合苹果公司的质量、安全和内容指导方针。然而,这也是一项挑战,因为需要大量的等待时间,从而延误了向公众发布应用程序的时间。
封闭生态系统
苹果公司严格控制其设备的硬件和软件,这意味着只有苹果公司认可的软件和硬件才能与 iOS 设备一起使用。其封闭的生态系统也限制了定制的潜力,如果您希望为应用程序的用户提供更大的灵活性,这可能会造成障碍。
这种封闭系统将使开发人员更难与第三方服务和应用程序接口集成。
iOS 应用程序的后台选项
既然知道了开发 iOS 应用程序的好处和局限性,就应该了解 iOS 应用程序的不同后台选项。
IaaS
基础设施即服务(IaaS)是一种云计算模式,由第三方提供商通过互联网向用户提供虚拟化计算资源,用户可能需要这些资源来运行个人软件。
使用 IaaS 就像从第三方提供商那里租用一台虚拟电脑。你可以通过互联网访问提供商托管的计算机,而不是购买和存储计算机。
这台计算机只是一台真实计算机的虚拟代表,它提供了所有基本的基础设施,让你可以利用存储空间、处理能力和内存等功能构建自己的虚拟计算环境。
提供商允许您访问这台虚拟计算机,您可以在其中运行自己的软件和应用程序,而不必担心物理硬件或维护问题。
使用 IaaS,您可以根据需要扩大或缩小规模,而且只需支付使用费用。IaaS 服务的例子包括亚马逊网络服务(AWS)、微软 Azure 和谷歌云平台。
PaaS
平台即服务(PaaS)是与 IaaS 相似的另一种云计算模式。PaaS 提供商提供一个预配置平台,只需进行最少的定制,使您可以更方便、更快捷地创建和部署应用程序。
IaaS 和 PaaS 的主要区别在于对底层基础设施的控制程度。
通过 IaaS,提供商通过互联网提供虚拟化计算资源,如服务器和存储。同时,您可以完全控制虚拟环境,包括操作系统、中间件和应用程序。
另一方面,在 PaaS 中,提供商为操作系统、中间件以及开发和部署应用程序所需的其他软件组件提供一个预配置平台。你只需专注于开发应用程序,而 PaaS 提供商则负责底层基础设施。
PaaS 服务的例子包括 Heroku、Google App Engine 和 Microsoft Azure App Service。
BaaS
通过后端即服务(BaaS),您可以轻松地将云后端集成到您的应用程序中,而无需构建或管理底层基础设施。
BaaS 提供商提供 PaaS 或 IaaS 通常不提供的预构建后端服务,如数据库、用户身份验证、文件存储、无服务器功能和推送通知。现在,您可以通过 API 或SDK 将这些服务集成到您的应用程序中。
这样,您就无需构建和维护自己的后台基础设施,从而可以专注于构建应用程序的前端。BaaS 服务的例子包括 Back4App、Firebase 和 8Base。
开发 iOS 应用程序后台的成本是多少?
为 iOS 应用程序开发后台的成本因各种因素而异,包括时间、资源和所需人力资源。
构建和设置后台所花费的时间是一个重要的考虑因素。建立后台所需的时间取决于应用程序功能的复杂程度以及后台与应用程序的集成。
此外,还可能需要额外的时间进行测试、调试和部署。应用程序的功能越复杂,开发后台所需的时间就越长,最终会增加成本。
开发后台所需的人力资源是影响成本的另一个关键因素。雇用和留住有经验的开发人员可能会很昂贵,而培训和开发的成本也会增加开发后台的总体成本。
开发 iOS 应用程序后台的成本可以通过利用现有的后台解决方案(如 Back4app)来控制。
如何使用 Back4app 构建 iOS 应用程序后台?
Back4App 是一个后端即服务(BaaS)平台,为移动和网络应用程序开发提供现成的后端基础设施。它提供功能强大、可扩展的后端基础设施,包括数据库管理、用户身份验证、推送通知等。
出于以下几个原因,Back4App 是 iOS 应用程序后台的最佳选择。首先,它提供了一个简单而友好的用户界面,可以轻松管理数据和应用程序接口。
其次,它提供全面的文档,指导您完成开发过程的每一步。此外,Back4App 还提供可扩展的云主机,可满足任何应用程序(无论大小)的需求,并提供高端安全功能。
按照以下步骤,您就可以使用 Back4App 构建 iOS 应用程序后台。
第 1 步:注册免费的 Back4app 账户
要为您的 iOS 应用程序创建后台基础设施,请在官方网站上注册一个免费的 Back4App 账户。有了 Back4App 帐户,您就可以为 iOS 应用程序创建和配置后台,并通过该后台应用程序管理所有与数据相关的流程。
要注册免费账户,请访问Back4App 网站,使用 Google 账户、GitHub账户或电子邮件地址注册。
步骤 2:创建新应用程序
现在您已经拥有一个 Back4App 账户,可以登录并创建一个新 APP。在您账户页面的右上角有一个创建按钮。您应为应用程序选择 “后台即服务 “选项。
给你的新应用取一个合适的名字,然后点击 “创建 “按钮。
现在,Back4App 将创建您的应用程序,并引导您进入其仪表板。
第 3 步:将 iOS 应用程序连接至 Back4app
下一步是将您的 iOS 应用程序连接到 Back4App 后台。为此,您必须在 iOS 应用程序中安装 Parse SDK。您的应用程序将使用该 SDK 获得与后台的直接链接。
在建立连接之前,您需要有一个运行正常的 iOS 应用程序。如前所述,iOS 应用程序是使用 Xcode(苹果用于开发苹果软件的集成开发环境)构建的。
您需要在 Mac 计算机上安装最新版本的 Xcode(版本 13.0.0 或更高版本),才能阅读本指南。本指南中使用的某些工具和功能仅适用于这些版本的 Xcode。
首先,启动 Xcode 并创建一个新的 Xcode iOS应用程序项目:
系统会提示您填写应用程序名称和一些配置信息。请确保选择 SwiftUI 作为界面。
SwiftUI 界面使用的视图系统与逐步淘汰的 StoryBoard 界面不同。因此,您当前的项目结构中将缺少一个AppDelegate.swift
文件。您需要创建该文件,因为在本指南的后续内容中将用到它。
创建AppDelegate.swift
,并将以下代码导入该文件:
import SwiftUI
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
}
现在,在项目根文件的应用程序
中,复制并在顶部粘贴以下代码:
@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
现在您可以安装 Parse SDK 了。您将使用CocoaPods(Xcode 项目的开源依赖关系管理器)进行安装。如果您还没有安装,请继续安装 CocoaPods。
首先,在项目目录下的终端中运行pods init
命令,为项目初始化 Podfile。
用 Xcode 打开生成的 Podfile,并指定 Parse SDK。
您的 Podfile 文件应该如下所示:
# Uncomment the next line to define a global platform for your project
#platform :ios, '13.0'
target 'ParseiOS-app' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for ParseiOS-app
pod 'Parse'
end
然后,你就可以在 Podfile 中指定 Parse 依赖关系,将 Parse SDK 安装到你的项目中。
在终端运行以下命令
pod install
安装 pod 后,您的项目将重建为扩展名为.xcworkspace
的新工作区文件。您将从这里开始使用重建的工作区。
您已成功将 Parse SDK 安装到您的项目中。
运行 pod 安装后,您可能会遇到 iOS 版本模拟器兼容性错误。如果出现这种情况,请修改 Podfile,在末尾加入此内容:
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
end
end
end
end
代码片段是 Podfile 的安装后钩子,允许您在 CocoaPods 完成 Pod 安装后修改 Xcode 项目的构建设置。
此安装后程序将 iPhone 操作系统的最低部署目标版本设置为 12.0。你可以随时将新版本分配给['IPHONEOS_DEPLOYMENT_TARGET'] 来
更改它。
现在再次安装 pod:
pod install
要完成 iOS 应用程序的连接,您需要链接 Back4App 应用程序的应用程序 ID 和客户端密钥。为此,请前往仪表板上的 “应用程序设置“,然后导航至 “服务器设置”>”核心设置”。
在“核心设置 “中,您可以找到为 Back4App 后台生成的应用程序 ID
和客户端密钥
。复制并保存这些密钥。
💡注意:上图中显示的密钥是为本指南构建的一个测试应用程序。请务必复制您自己的个性化密钥,因为上述密钥不适用于您的应用程序。
接下来,打开AppDelegate.swift
,修改didFinishLaunchingWithOptions
函数中的现有代码。
您的函数应该是这样的
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
print("app launched!")
let configuration = ParseClientConfiguration {
$0.applicationId = "PASTE_YOUR_APPLICATION_ID_HERE"
$0.clientKey = "PASTE_YOUR_CLIENT_ID_HERE"
$0.server = "<https://parseapi.back4app.com>"
}
Parse.initialize(with: configuration))
return true
}
将保存的应用程序 ID
和客户端密钥
粘贴到指定的占位符中。
然后将 Parse SDK 导入该文件,以清除任何"未找到模块 "的
错误:
import Parse
您的应用程序现已成功连接到 Back4App!
步骤 4:测试后台
在本节中,您将测试您的 iOS 应用程序,以确认您可以与 Back4App 服务器和您创建的应用程序进行交互。
您将使用Parse SDK 测试 CRUD 操作和数据存储。
测试结束后,您就可以确认创建的数据已成功保存并从后台应用程序读取。
要在后台存储数据,您需要在 Back4app 中创建一个类对象。默认情况下,一个新类将有一个包含三个字段的模式:”对象 ID”、”创建时间 “和 “更新时间”。您可以添加新字段和数据行。
您将在 iOS 应用程序中创建一个新字段,并读取存储在所创建类中的数据。
首先,在ContentView.swift
中导入 Parse SDK,就在 SwiftUI 下方:
import SwiftUI
import Parse
为了测试应用程序是否能与后台交互,您将创建一个用户界面,让用户输入分数文本,并将其保存在后台。应用程序还将能够进入后台,从您的类中查询数据,并显示保存的分数。
在ContentView.swift
中视图结构的顶部创建以下可变状态属性:
@State private var newScore: Int = ""
@State private var scores: [PFObject] = []
当这些状态属性的值发生变化时,它们将触发视图更新。第一个状态属性名为newScore
,类型为String
。它代表用户为新分数输入的输入值。它的初始化值为空字符串""
。
第二项声明了一个名为scores
的状态属性,其类型为[PFObject]
,是一个PFObject
实例数组。这将代表从后台获取的分数。
PFObject
类是Parse-SDK-iOS
提供的一个可以存储数据的类对象。它允许你为对象定义自定义属性和值,然后保存到后台。
接下来,在VStack
元素中添加以下代码片段:
VStack {
TextField("EnterScore", text: $newScore)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button("Save Scores") {
saveScore()
}
List(scores, id: \\.objectId) { score in
Text(score["score"] as? String ?? "")
}
}
.padding()
.onAppear {
fetchScores()
}
您有一个文本字段
,用户将在该字段中输入分数。文本
参数与newScore
状态变量绑定,这意味着文本字段中的任何变化都将反映在newScore
变量中。
接下来是 “保存分数 “按钮,点击后会触发saveScore()
函数。
列表
组件显示从后台获取的分数。您可以使用分数
数组来填充列表,而id
参数则为每个分数项指定一个唯一标识符。在列表中,有一个文本
视图以字符串形式显示分数值。
您可以使用可选链和 nil-coalescing 操作符 (??
) 来处理分数不可用或类型不同的情况。
最后,onAppear
修改器用于在 VStack 视图出现时触发fetchScores()
函数。
此时,您应该会收到一个错误信息,即无法找到saveScores()
和fetchScores
()
。
接下来您将创建这些函数。这些函数将分别处理从链接的 Back4app 后端应用中写入、保存数据和获取保存的数据。
使用.save()
或saveInBackground()
方法调用将newScore
变量保存到后台:
func saveScore() {
let score = PFObject(className: "GameScore")
score["score"] = newScore
score.saveInBackground { success, error in
if let error = error {
print("Error saving score: \\(error.localizedDescription)")
} else {
print("Score saved sucessfully: \\(String(describing: score.objectId))")
newScore = ""
fetchScores()
}
}
}
首先,创建一个类名为 “GameScore “的PFObject
新实例。该对象代表后台数据库中的一个新条目。在下一行中,将该对象的 “score “属性设置为newScore
的存储值。
然后,在分数
对象上调用saveInBackground
方法。使用saveInBackground
将启动在后台队列中执行的异步保存操作。在完成闭包中,要检查保存操作过程中是否发生错误,并处理错误。
成功保存分数后,将newScore
状态变量重置为空字符串,以清除文本字段。然后,调用fetchScores()
函数更新分数列表。
在fetchScores()
函数中,你将使用 Parse 的PFQuery
对后台数据执行查询,并从特定类中检索对象。在本例中,该类就是GameScore
类:
func fetchScores() {
let query = PFQuery(className: "GameScore")
query.findObjectsInBackground { objects, error in
if let error = error {
print("Error fetching scores: \\(error.localizedDescription)")
} else if let objects = objects {
scores = objects
}
}
}
在此,您需要调用查询对象上的findObjectsInBackground
方法来启动异步获取操作。在完成闭包中,您可以处理该查询的结果。
如果获取操作过程中出现错误,则打印错误信息。否则,如果获取成功并返回了对象,则用获取的对象更新分数
状态变量。这些对象代表从后台获取的分数。
当您运行应用程序,输入新分数并点击 “保存分数“按钮时,应用程序将向后台发送并保存您的新分数值,并获取所有已保存的分数。然后就会显示如下图所示的分数列表。
注意分数与后台分数值的对应关系。
这将确认测试已通过,您可以成功地从 Back4App 后端写入和读取数据。
现在您知道如何使用 Back4App 和 Swift 编程语言为 iOS 移动应用程序构建后台了。