使用 iOS 客户机 SDK 写入 Swift 应用程序
您可以使用 iOS 客户机 SDK 和 Swift 和 Objective.sql 编程语言开发 iOS 移动应用程序。
使用 Xcode IDE:
- 添加桥接程序标头文件。
- 添加 SDK 标头文件和库。
- 添加 ObjectiveIops 链接器标记。
- 编译并使用 iOS 客户机 SDK 关联应用程序,就像在 Xcode 中使用任何其他 iOS 项目一样。将 SDK 与 Swift 配合使用时所有相同的相关性与将 SDK 与 Objective-C。
添加过渡标头文件
您需要使用桥接头文件来导入 Swift 应用程序调用的 Objective-C public 类的头文件。Oracle Mobile Hub 客户机 SDK 中的所有可用公共类都可以在 SDK 的 include
文件夹中找到。
要在 Xcode 中创建桥接程序头文件,请执行以下操作:
将 SDK 标头和库添加到 Swift 应用程序
您添加的标头和库集取决于您在应用程序中包含的客户机 SDK 的静态库。至少需要libOMCCore.a
和 libIDMMobileSDK.a
库。
在 Swift 应用程序中使用 SDK 对象
在 Apple 文档中描述了用于从 Objective.sql 转换为 Swift 的规则。有关这两种语言的关系和用法的一般信息,请确保您在此外观。
观看下列内容:
-
Xcode 中代码编辑器的自动完成功能通常足以充分利用映射。但是,有时它会将一个标签放入第一个不应该位于该位置的参数中。如果您正在使用自动完成功能,请观看此功能。
-
当 Objective-C
init
方法超过 Swift 时,它们将采用本机 Swift 初始化程序语法。这意味着将init
前缀关闭并变为关键字,以指示该方法是初始化程序。有关完整详细信息,请参阅 Apple 文档。 -
请特别注意
!
和?
可选参数规范,以及声明中的任何参数化类型。将 Objective.sql 映射到 Swift 时,编译器会自动确定可选类型。
您应当能够在 Xcode 模拟器和实际设备上使用 Swift 和Oracle Mobile Hub 客户端 SDK 编译和运行移动应用。
下面是 Objective-C 的示例以及使用Oracle Mobile Hub 客户机 SDK 的可比较的 Swift 代码。
用于注册用于推送通知的设备标记的以下 Objective-C 代码:
// Get notifications sdk object
OMCNotifications* notifications = [[appDelegate myMobileBackend] notifications];
// Register device token with MCS server using notifications sdk
[notifications registerForNotifications:[appDelegate getDeviceTokenData]
onSuccess:^(NSHTTPURLResponse *response) {
NSLog(@"Device token registered successfully on MCS server");
dispatch_async(dispatch_get_main_queue(), ^{
// Update UI here
}) ;
}
onError:^(NSError *error) {
NSLog(@"Error: %@", error.localizedDescription);
dispatch_async(dispatch_get_main_queue(), ^{
// Update UI here
}) ;
}];
在 Swift 中可以用以下方式编写:
@IBAction func registerForPushNotifications() {
// Get notifications sdk object
let notifications = appDelegate.myMobileBackend().notifications();
// Get device token first, and assign it here
let deviceTokenData:NSData! = nil;
// Register device token with MCS server using notifications sdk
notifications.registerForNotifications(deviceTokenData, onSuccess: { (response:NSHTTPURLResponse!) in
NSLog("Device token registered successfully on MCS server");
dispatch_async(dispatch_get_main_queue()) {
// Update UI here
}
}) { (error) in
print("Error: %@", error.localizedDescription);
};
}