iOS UMeng OC和Swift混編
iOS UMeng OC和Swift混編
Swift呼叫Objective-C需要建立一個橋接標頭檔案進行互動
新建橋接標頭檔案
本例橋接檔案命名為:UMengDemo-Bridging-Header.h
設定Objective-C橋接檔案
匯入SDK標頭檔案
在UMengDemo-Bridging-Header.h中加入U-Share SDK標頭檔案:
//匯入UMCommon的OC的標頭檔案
#import <UMCommon/UMCommon.h>
//匯入UShare的OC的標頭檔案
#import <UMSocialCore/UMSocialCore.h>
#import <UShareUI/UShareUI.h>
//匯入UMAnalytics的OC的標頭檔案
#import <UMAnalytics/DplusMobClick.h>
#import <UMAnalytics/MobClick.h>
#import <UMAnalytics/MobClickGameAnalytics.h>
//匯入UMPush的OC的標頭檔案
#import <UMPush/UMessage.h>
UMengDemo的OC和Swift的切換
UMengDemo是用OC的程式碼編寫的,同時也相容了swift3.0的呼叫示例(UMengDemo不再對swift2.0做示例相容).
swift資料夾的結構
檔名功能說明如下:
- UMSocialSDK-Bridging-Header.h 為swift3.0的橋接檔案,主要是在swift3.0中,呼叫oc的程式碼。
- UMShareSwiftInterface.swift 為社會化分享Swift3.0的介面檔案,主要是為了展示使用者讓oc呼叫swift3.0的程式碼的示例(使用者可以在swift3.0的工程中直接呼叫對應的swift介面)。 備註:UMSocialSwiftInterface.swift這個檔案是單獨分享工程Demo用的swift檔案,現在只是換了一個類名而已,請使用者知曉。
- UMAnalyticsSwiftInterface.swift 為統計SDK的Swift3.0的介面檔案和OC的API一一對應。
- UMGameAnalyticsSwiftInterface.swift 為遊戲統計SDK的Swift3.0的介面檔案和OC的API一一對應。
- UMDplusMobClickSwiftInterface.swift 為Dplus的統計SDK的Swift3.0的介面檔案和OC的API一一對應。
- UMessageSwiftInterface.swift 為PushSdk的Swift3.0的介面檔案和OC的API一一對應。
- UMCommonSwiftInterface.swift 為Common元件的Swift3.0的介面檔案和OC的API一一對應。
設定切換swift的巨集
引入對應的swift的標頭檔案,並在OC中呼叫swift3.0的程式碼如下
程式碼如下
#ifdef UM_Swift
#import "UMengDemo-Swift.h"
#endif
//分享文字
- (void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
//建立分享訊息物件
UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
//設定文字
messageObject.text = UMS_Text;
#ifdef UM_Swift
[UMSocialSwiftInterface shareWithPlattype:platformType messageObject:messageObject viewController:self completion:^(UMSocialShareResponse * data, NSError * error) {
#else
//呼叫分享介面
[[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
#endif
if (error) {
UMSocialLogInfo(@"************Share fail with error %@*********",error);
}else{
if ([data isKindOfClass:[UMSocialShareResponse class]]) {
UMSocialShareResponse *resp = data;
//分享結果訊息
UMSocialLogInfo(@"response message is %@",resp.message);
//第三方原始返回的資料
UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);
}else{
UMSocialLogInfo(@"response data is %@",data);
}
}
[self alertWithError:error];
}];
}
注意事項如下:
UMengDemo-Swift.h 是工程自動為OC呼叫swift生成的,如果在新建的工程中應該是 $(TARGET_NAME)-Swift.h ,$(TARGET_NAME)為你的工程預設配置的名字
UMengDemo需要xcode8下開啟,因為裡面引入了swift3.0的檔案,不然會編譯出錯(如果不需要swift3.0,直接執行OC的程式碼,可以去掉對應巨集 UM_Swift 和工程裡面對應的 UMSwift3.0資料夾 即可編譯通過)。
相關文章
- OC和Swift混編Swift
- OC和Swift混編經驗Swift
- iOS-OC、Swift混編之橋接檔案iOSSwift橋接
- 進階-Swift和OC混編生成 swift pod私有庫Swift
- OC與Swift混編專案遷移到Swift4.2小記Swift
- Swift中橋接標頭檔案建立(Swift 與 OC 的混編)Swift橋接
- Objective-C和Swift混編ObjectSwift
- iOS Swift和OC專案中自定義LogiOSSwift
- swift 混編 oc 斷點時資料只有變數名稱不顯示值Swift斷點變數
- iOS開發中使用OC和swift的對比iOSSwift
- OC與C++ 混編的檔案互動C++
- 京東App Swift 混編及元件化落地APPSwift元件化
- iOS 開發選擇OC還是Swift?iOSSwift
- 優雅的開發 Swift 和 Objective-C 混編的 FrameworkSwiftObjectFramework
- Objective-C 和 Swift 混編專案的小 Tips(一)ObjectSwift
- ios 時間 string 和 nsdate問題 swift2 2 ociOSSwift
- 雲音樂 Swift 混編 Module 化實踐Swift
- swift專案呼叫OC庫 和OC專案 在swift檔案裡面全域性呼叫OC庫Swift
- [混編] iOS原生專案- 接入FlutteriOSFlutter
- iOS開發——OC編碼規範iOS
- Swift和Objective-C混合程式設計——Swift呼叫OCSwiftObject程式設計
- Swift和Objective-C混合程式設計——OC呼叫SwiftSwiftObject程式設計
- [混編] iOS原生專案- iOS/flutter 程式碼互動iOSFlutter
- Swift與OC的不同Swift
- OC 與 Swift 相互呼叫Swift
- OC 和 Swift 中是如何用列舉的?Swift
- Objective-C Mix Swift Configuration:混編設定ObjectSwift
- iOS Navigation Bar 導航欄折騰記 (Swift&OC)iOSNavigationSwift
- iOS Native混編Flutter互動實踐iOSFlutter
- iOS混編 模組化、元件化、經驗指北iOS元件化
- Swift iOS : 編譯器的智慧SwiftiOS編譯
- 2017 iOS 最近手機號正規表示式(OC/Swift)iOSSwift
- 初識OC&iOS 類和物件iOS物件
- iOS 富文字的應用(圖片與文字混編)iOS
- (轉)OC專案轉Swift指南Swift
- 今天在object-c 和swift 混編的時候出現錯誤:could not build module foundationObjectSwiftUI
- 混編ObjectiveC++ObjectC++
- ios OC初學iOS