使用 iOS 從屬端 SDK 撰寫 Swift 應用程式
您可以使用 iOS 從屬端 SDK 和 Swift 和 Objective-C 程式設計語言來開發 iOS 行動應用程式。
使用Xcode IDE:
- 新增橋接標頭檔案。
- 新增 SDK 標頭檔案和程式庫。
- 新增 Objective-C 連結器旗標。
- 使用 iOS 從屬端 SDK 編譯並連結應用程式,就像您使用 Xcode 進行的任何其他 iOS 專案一樣。使用 SDK 搭配 Swift 時,具有與使用 SDK 搭配 Objective-C 相同的所有相依性。
新增橋接標頭檔案
您必須使用橋接標頭檔案來匯入您 Swift 應用程式呼叫之 Objective-C 公用類別的標頭檔案。您可以在 SDK 的 include
資料夾中找到Oracle Mobile Hub 從屬端 SDK 中所有可用的公開類別。
在 Xcode 中建立 bridging 標頭檔案:
新增 SDK 標頭和程式庫至 Swift 應用程式
您新增的一組標頭和程式庫,取決於您應用程式中所含之從屬端 SDK 的靜態程式庫。您至少需要libOMCCore.a
與 libIDMMobileSDK.a
程式庫。
在 Swift 應用程式中使用 SDK 物件
下文件中說明從 Objective-C 轉換成 Swift 的規則。如需這兩種語言之關係與用途的一般資訊,請務必查看這裡。
監看下列項目:
-
Xcode 中「程式碼編輯器」的自動完成功能通常十分有效率,可讓您取得對應。然而,有時會將標籤放在第一個不應該存在的參數中。如果您使用自動完成,請進行監看。
-
當 Objective-C
init
方法進入 Swift 時,就會採用原生 Swift 初始設定元語法。這表示init
前置碼會被切割並成為關鍵字,以指示方法為初始設定元。請參閱 Apple 文件瞭解完整的詳細資訊。 -
請特別注意
!
和?
可選參數設定,以及宣告中的任何參數類型。將 Objective-C 對應至 Swift 時,編譯器會自動決定選擇性類型。
您必須能夠在「Xcode 模擬器」和實際裝置上使用 Swift 和Oracle Mobile Hub 從屬端 SDK 來編譯及執行行動應用程式。
以下是使用Oracle Mobile Hub 從屬端 SDK 之 Objective-C 與可比較 Swift 代碼的範例。
註冊推送通知之裝置記號的下列 Objective-cc 代碼:
// 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);
};
}