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
- Objective-C和Swift混編ObjectSwift
- iOS開發中使用OC和swift的對比iOSSwift
- swift 混編 oc 斷點時資料只有變數名稱不顯示值Swift斷點變數
- iOS 開發選擇OC還是Swift?iOSSwift
- 雲音樂 Swift 混編 Module 化實踐Swift
- 京東App Swift 混編及元件化落地APPSwift元件化
- iOS Navigation Bar 導航欄折騰記 (Swift&OC)iOSNavigationSwift
- [混編] iOS原生專案- 接入FlutteriOSFlutter
- OC 與 Swift 相互呼叫Swift
- iOS Native混編Flutter互動實踐iOSFlutter
- [混編] iOS原生專案- iOS/flutter 程式碼互動iOSFlutter
- (轉)OC專案轉Swift指南Swift
- OC,swift,javascript,Dart語言比較SwiftJavaScriptDart
- 今天在object-c 和swift 混編的時候出現錯誤:could not build module foundationObjectSwiftUI
- 2018-07-12 OC 與swift 互相呼叫Swift
- Swift iOS:KVOSwiftiOS
- Swift iOS : RichTextSwiftiOS
- Swift iOS : ArchiveSwiftiOSHive
- iOS 初探程式碼混淆(OC)iOS
- Swift iOS : 解析jsonSwiftiOSJSON
- iOS OC-自定義TabBar TabBarViewControlleriOStabBarViewController
- Covariance, Contravariance以及Generics在 Swift/OC 中的應用.Swift
- oc與swift檔案的相互呼叫方式——橋接Swift橋接
- python與matlab混編PythonMatlab
- C++和MATLAB混編的問題集錦C++Matlab
- 深入小程式系列(三) ReactNative和小程式混編React
- QT creator 中c和c++混編問題QTC++
- [譯] lazy var in ios swiftiOSSwift
- iOS--Unsupported swift versioniOSSwift
- Swift iOS : 本地化SwiftiOS
- Swift iOS : self sized cellSwiftiOSZed
- iOS Swift 工程使用 TargetiOSSwift
- Swift iOS : 定製CellSwiftiOS