种地 发表于 2025-2-25 15:24:44

iOS UMeng OC和Swift混编

设置Objective-C桥接文件
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fcamo.githubusercontent.com%2F04761aeba654eb67c4423604d5ec85dd3d56fde6%2F687474703a2f2f6465762e756d656e672e636f6d2f73797374656d2f696d616765732f573173695a694973496a49774d5463764d4455764d7a45764d5464664d545a664d544a664e54557a58313950596d706c59335270646d5666513138756347356e496c31642fe8aebee7bdae4f626a6563746976652d43e6a1a5e68ea5e69687e4bbb62e706e67&pos_id=img-AkaMLGOI-1736694758405
导入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文件夹的结构

https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fcamo.githubusercontent.com%2F48801bbd6cc6f60d39f9c3c37a29fa969445b768%2F687474703a2f2f6465762e756d656e672e636f6d2f73797374656d2f696d616765732f573173695a694973496a49774d5463764d4455764d7a45764d5464664d545a664e446c664f44513258334e3361575a304d79347758793577626d63695856302f7377696674332e302545372539412538342545362539362538372545342542422542362545372542422539332545362539452538342e706e67&pos_id=img-E3ZMB1HT-1736694758407
文件名功能分析如下:
   
[*]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的宏
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fcamo.githubusercontent.com%2F1c27c2a795a780f5cc40f66733bffa64f5a8235a%2F687474703a2f2f6465762e756d656e672e636f6d2f73797374656d2f696d616765732f573173695a694973496a49774d5463764d4449764d4459764d545a664e545a664d7a46664e54493558334e3361575a304d31387758334e6c64485270626d63756347356e496c31642f7377696674335f305f73657474696e672e706e67&pos_id=img-NiyckMhv-1736694758407
引入对应的swift的头文件,并在OC中调用swift3.0的代码如下

代码如下
#ifdef UM_Swift
#import “UMengDemo-Swift.h”
#endif
//分享文本


[*](void)shareTextToPlatformType:(UMSocialPlatformType)platformType
{
//创建分享消息对象
UMSocialMessageObject *messageObject = ;
//设置文本
messageObject.text = UMS_Text;
#ifdef UM_Swift
[UMSocialSwiftInterface shareWithPlattype:platformType messageObject:messageObject viewController:self completion:^(UMSocialShareResponse * data, NSError * error) {
#else
//调用分享接口
[ shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
#endif
if (error) {
UMSocialLogInfo(@“***Share fail with error %@”,error);
}else{
if (]) {
UMSocialShareResponse *resp = data;
//分享结果消息
UMSocialLogInfo(@“response message is %@”,resp.message);
//第三方原始返回的数据
UMSocialLogInfo(@“response originalResponse data is %@”,resp.originalResponse);
resp = data;
//分享结果消息
UMSocialLogInfo(@“response message is %@”,resp.message);
//第三方原始返回的数据
UMSocialLogInfo(@“response originalResponse data is %@”,resp.originalResponse);

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: iOS UMeng OC和Swift混编