333 lines
14 KiB
Plaintext
333 lines
14 KiB
Plaintext
//
|
|
// UnityInternalCallMintegral.m
|
|
// Unity-iPhone
|
|
//
|
|
// Created by iMengqing on 2023/8/9.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import <MTGSDK/MTGTrackAdRevenue.h>
|
|
#import<MTGSDK/MTGSDK.h>
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
|
|
static NSString *const kMTG_Mediation_Admob = @"Admob";
|
|
static NSString *const kMTG_Mediation_IronSource = @"IronSource";
|
|
static NSString *const kMTG_Mediation_Max = @"Max";
|
|
static NSString *const kMTG_Mediation_Tradeplus=@"Tradeplus";
|
|
|
|
|
|
static NSString *const kMTG_mediationName = @"mediationName";
|
|
static NSString *const kMTG_attributionPlatformName = @"attributionPlatformName";
|
|
static NSString *const kMTG_attributionUserID = @"attributionUserID";
|
|
static NSString *const kMTG_mBridge_Version=@"mBridge_Version";
|
|
static NSString *const kMTG_u_p_v=@"u_p_v";
|
|
|
|
///admob key
|
|
static NSString *const kMTG_Admob_adType = @"adType";
|
|
static NSString *const kMTG_Admob_adUnitID = @"adUnitID";
|
|
static NSString *const kMTG_Admob_loadedadapterResponseInfo = @"loadedadapterResponseInfo";
|
|
static NSString *const kMTG_Admob_AdapterClassName = @"AdapterClassName";
|
|
static NSString *const kMTG_Admob_AdUnitMapping = @"AdUnitMapping";
|
|
///admob adValue key
|
|
static NSString *const kMTG_Admob_adValue = @"adValue";
|
|
static NSString *const kMTG_Admob_adValue_Precision = @"Precision";
|
|
static NSString *const kMTG_Admob_adValue_CurrencyCode = @"CurrencyCode";
|
|
static NSString *const kMTG_Admob_adValue_Value = @"Value";
|
|
|
|
|
|
//ironsource key
|
|
static NSString *const kMTG_IronSource_irinstanceid = @"irinstanceid";
|
|
static NSString *const kMTG_IronSource_ironSourceImpressionData = @"ironSourceImpressionData";
|
|
static NSString *const kMTG_IronSource_adUnit = @"adUnit";
|
|
static NSString *const kMTG_IronSource_adNetwork = @"adNetwork";
|
|
static NSString *const kMTG_IronSource_precision = @"precision";
|
|
static NSString *const kMTG_IronSource_revenue = @"revenue";
|
|
static NSString *const kMTG_IronSource_instanceId = @"instanceId";
|
|
|
|
//max key
|
|
static NSString *const kMTG_max_adInfo = @"adInfo";
|
|
static NSString *const kMTG_max_AdUnitIdentifier = @"AdUnitIdentifier";
|
|
static NSString *const kMTG_max_AdFormat = @"AdFormat";
|
|
static NSString *const kMTG_max_NetworkName = @"NetworkName";
|
|
static NSString *const kMTG_max_RevenuePrecision = @"RevenuePrecision";
|
|
static NSString *const kMTG_max_Revenue = @"Revenue";
|
|
static NSString *const kMTG_max_WaterfallInfo = @"WaterfallInfo";
|
|
static NSString *const kMTG_max_NetworkResponses = @"NetworkResponses";
|
|
static NSString *const kMTG_max_AdLoadState = @"AdLoadState";
|
|
static NSString *const kMTG_max_Credentials = @"Credentials";
|
|
static NSString *const kMTG_max_IsBidding = @"IsBidding";
|
|
static NSString *const kMTG_max_DspName = @"DspName";
|
|
|
|
|
|
|
|
//tradeplus key
|
|
static NSString *const kMTG_tp_adInfo = @"adInfo";
|
|
|
|
|
|
//Custom key
|
|
static NSString *const KMTG_Custom_attributionPlatformName = @"AttributionPlatformName";
|
|
static NSString *const KMTG_Custom_attributionPlatformUserId = @"AttributionPlatformUserId";
|
|
static NSString *const KMTG_Custom_MediationName = @"MediationName";
|
|
static NSString *const KMTG_Custom_MediationUnitId = @"MediationUnitId";
|
|
static NSString *const KMTG_Custom_AdNetworkName = @"AdNetworkName";
|
|
static NSString *const KMTG_Custom_Precision = @"Precision";
|
|
static NSString *const KMTG_Custom_Currency = @"Currency";
|
|
static NSString *const KMTG_Custom_Revenue = @"Revenue";
|
|
static NSString *const KMTG_Custom_AdNetworkUnitInfo = @"AdNetworkUnitInfo";
|
|
static NSString *const KMTG_Custom_IsBidding = @"IsBidding";
|
|
static NSString *const KMTG_Custom_AdType = @"AdType";
|
|
static NSString *const KMTG_Custom_DspId = @"DspId";
|
|
static NSString *const KMTG_Custom_DspName = @"DspName";
|
|
static NSString *const KMTG_Custom_AllInfo = @"AllInfo";
|
|
|
|
static bool debug = false;
|
|
static bool mtg_check_nsstring(NSString *arg) {
|
|
if (!arg || ![arg isKindOfClass:[NSString class]]
|
|
|| ![arg respondsToSelector:@selector(length)] || arg.length == 0) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
static bool mtg_check_dict(NSDictionary *arg) {
|
|
if (!arg) {
|
|
return false;
|
|
}
|
|
if (![arg isKindOfClass:NSDictionary.class]) {
|
|
return false;
|
|
}
|
|
|
|
if (arg.allKeys.count == 0) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void _initialize(char * appID,char * appKey){
|
|
NSString*appid=[[NSString alloc] initWithUTF8String:appID];
|
|
NSString*appkey=[[NSString alloc] initWithUTF8String:appKey];
|
|
if(mtg_check_nsstring(appid)&&mtg_check_nsstring(appkey))
|
|
[[MTGSDK sharedInstance] setAppID:appid ApiKey:appkey];
|
|
|
|
}
|
|
void _setDebug(bool p){
|
|
debug=p;
|
|
}
|
|
//游戏层访问SDK的接口
|
|
void _trackAdRevenueWithAdRevenueModel(char * jsonpara)
|
|
{
|
|
|
|
if (jsonpara == NULL)
|
|
return;
|
|
if(debug)
|
|
NSLog(@"ROAS _trackAdRevenueWithAdRevenueModel %s",jsonpara);
|
|
NSString*string=[[NSString alloc] initWithUTF8String:jsonpara];
|
|
|
|
NSData *jsonData = [string dataUsingEncoding:NSUTF8StringEncoding];
|
|
NSDictionary *dics = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:NULL];
|
|
|
|
NSString *mediationName = dics[kMTG_mediationName];
|
|
if([mediationName isEqualToString:kMTG_Mediation_Tradeplus]){
|
|
MTGTrackAdRevenueTradPlusModel*tpModel=[[MTGTrackAdRevenueTradPlusModel alloc]init];
|
|
NSDictionary *adInfo = dics[kMTG_tp_adInfo];
|
|
tpModel.attributionPlatformName=dics[kMTG_attributionPlatformName];
|
|
tpModel.attributionUserID = dics[kMTG_attributionUserID];
|
|
if(mtg_check_dict(adInfo)){
|
|
tpModel.adInfo=adInfo;
|
|
}
|
|
if(mtg_check_nsstring(dics[kMTG_mBridge_Version])){
|
|
tpModel.extraData = @{kMTG_u_p_v:dics[kMTG_mBridge_Version]};
|
|
}
|
|
|
|
[MTGTrackAdRevenue trackAdRevenueWithAdRevenueModel:tpModel];
|
|
return;
|
|
}
|
|
|
|
MTGTrackAdRevenueCustomModel *customModel = [[MTGTrackAdRevenueCustomModel alloc]init];
|
|
|
|
customModel.attributionPlatformName = dics[kMTG_attributionPlatformName];
|
|
customModel.attributionUserID = dics[kMTG_attributionUserID];
|
|
|
|
if(mtg_check_nsstring(mediationName))
|
|
{
|
|
customModel.mediationName = mediationName;
|
|
|
|
if ([mediationName isEqualToString:kMTG_Mediation_Admob]) {
|
|
customModel.adType = dics[kMTG_Admob_adType];//@"Banner";
|
|
customModel.mediationUnitId = dics[kMTG_Admob_adUnitID];
|
|
NSDictionary *adapterResponseInfo = dics[kMTG_Admob_loadedadapterResponseInfo];
|
|
if(mtg_check_dict(adapterResponseInfo)){
|
|
|
|
customModel.adNetworkName =adapterResponseInfo[kMTG_Admob_AdapterClassName]; //self.bannerView.responseInfo.loadedAdNetworkResponseInfo.adNetworkClassName;
|
|
customModel.adNetworkUnitInfo =adapterResponseInfo[kMTG_Admob_AdUnitMapping]; //self.bannerView.responseInfo.loadedAdNetworkResponseInfo.adUnitMapping;
|
|
|
|
customModel.allInfo = adapterResponseInfo;
|
|
}
|
|
NSDictionary *adValue = dics[kMTG_Admob_adValue];
|
|
if(mtg_check_dict(adValue)){
|
|
|
|
customModel.precision = adValue[kMTG_Admob_adValue_Precision];//[NSString stringWithFormat:@"%ld",(long)value.precision];
|
|
customModel.currency = adValue[kMTG_Admob_adValue_CurrencyCode];//value.currencyCode;
|
|
customModel.revenue = @([adValue[kMTG_Admob_adValue_Value] doubleValue]);//value.value;
|
|
}
|
|
|
|
customModel.dspName = @"";
|
|
|
|
}else if([mediationName isEqualToString:kMTG_Mediation_IronSource]){
|
|
// -----是不是instanceid
|
|
customModel.mediationUnitId = dics[kMTG_IronSource_irinstanceid];
|
|
// ------只能从ironSourceImpressionData中取
|
|
|
|
NSDictionary *ironSourceImpressionData = dics[kMTG_IronSource_ironSourceImpressionData];
|
|
if(mtg_check_dict(ironSourceImpressionData)){
|
|
|
|
customModel.adType = ironSourceImpressionData[kMTG_IronSource_adUnit];//@"Banner";
|
|
customModel.adNetworkName =ironSourceImpressionData[kMTG_IronSource_adNetwork];// impressionData.ad_network;
|
|
customModel.precision =ironSourceImpressionData[kMTG_IronSource_precision];//impressionData.precision;
|
|
customModel.revenue = ironSourceImpressionData[kMTG_IronSource_revenue];//impressionData.revenue;
|
|
customModel.adNetworkUnitInfo = @{@"instanceId":ironSourceImpressionData[kMTG_IronSource_instanceId]};
|
|
customModel.allInfo =ironSourceImpressionData;
|
|
customModel.dspName = @"";
|
|
}
|
|
}
|
|
else if([mediationName isEqualToString:kMTG_Mediation_Max]){
|
|
NSDictionary *adInfo = dics[kMTG_max_adInfo];
|
|
if(mtg_check_dict(adInfo)){
|
|
customModel.mediationUnitId = adInfo[kMTG_max_AdUnitIdentifier];//ad.adUnitIdentifier;
|
|
customModel.adType = adInfo[kMTG_max_AdFormat];//ad.format.label;
|
|
customModel.adNetworkName = adInfo[kMTG_max_NetworkName];//ad.networkName;
|
|
customModel.precision = adInfo[kMTG_max_RevenuePrecision];//ad.revenuePrecision;
|
|
|
|
customModel.revenue = @([adInfo[kMTG_max_Revenue] doubleValue]);//adInfo[@"Revenue"]
|
|
|
|
NSDictionary *WaterfallInfo = adInfo[kMTG_max_WaterfallInfo];
|
|
if(mtg_check_dict(WaterfallInfo)){
|
|
|
|
NSDictionary *NetworkResponses = WaterfallInfo[@"NetworkResponses"];
|
|
if(mtg_check_dict(NetworkResponses)){
|
|
|
|
if([NetworkResponses[kMTG_max_AdLoadState] isEqual:@1]){
|
|
|
|
customModel.adNetworkUnitInfo = NetworkResponses[kMTG_max_Credentials];//info.credentials;
|
|
|
|
|
|
customModel.isBidding = [NetworkResponses[kMTG_max_IsBidding]boolValue] ;//info.isBidding;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
customModel.allInfo =adInfo;
|
|
customModel.dspName = adInfo[kMTG_max_DspName];//ad.DSPName;
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
// customModel.dspId =@"";
|
|
|
|
if(mtg_check_nsstring(dics[kMTG_mBridge_Version])){
|
|
customModel.extraData = @{kMTG_u_p_v:dics[kMTG_mBridge_Version]};
|
|
}
|
|
|
|
[MTGTrackAdRevenue trackAdRevenueWithAdRevenueModel:customModel];
|
|
|
|
|
|
}
|
|
|
|
void _trackAdRevenueWithAdCustomModel(char * jsonpara){
|
|
if (jsonpara == NULL)
|
|
return;
|
|
if(debug)
|
|
NSLog(@"ROAS _trackAdRevenueWithAdCustomModel %s",jsonpara);
|
|
NSString*string=[[NSString alloc] initWithUTF8String:jsonpara];
|
|
|
|
NSData *jsonData = [string dataUsingEncoding:NSUTF8StringEncoding];
|
|
NSDictionary *dics = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:NULL];
|
|
|
|
MTGTrackAdRevenueCustomModel *customModel = [[MTGTrackAdRevenueCustomModel alloc]init];
|
|
|
|
NSString *AttributionPlatformName = dics[KMTG_Custom_attributionPlatformName];
|
|
if(mtg_check_nsstring( AttributionPlatformName))
|
|
customModel.attributionPlatformName = AttributionPlatformName;
|
|
|
|
|
|
NSString *AttributionPlatformUserId = dics[KMTG_Custom_attributionPlatformUserId];
|
|
if(mtg_check_nsstring( AttributionPlatformUserId))
|
|
customModel.attributionUserID = AttributionPlatformUserId;
|
|
|
|
|
|
NSString *MediationName = dics[KMTG_Custom_MediationName];
|
|
if(mtg_check_nsstring( MediationName))
|
|
customModel.mediationName = MediationName;
|
|
|
|
|
|
NSString *MediationUnitId = dics[KMTG_Custom_MediationUnitId];
|
|
if(mtg_check_nsstring( MediationUnitId))
|
|
customModel.mediationUnitId = MediationUnitId;
|
|
|
|
|
|
NSString *AdNetworkName = dics[KMTG_Custom_AdNetworkName];
|
|
if(mtg_check_nsstring( AdNetworkName))
|
|
customModel.adNetworkName = AdNetworkName;
|
|
|
|
|
|
|
|
NSString *Precision = dics[KMTG_Custom_Precision];
|
|
if(mtg_check_nsstring( Precision))
|
|
customModel.precision = Precision;
|
|
|
|
|
|
|
|
NSString *Currency = dics[KMTG_Custom_Currency];
|
|
if(mtg_check_nsstring( Currency))
|
|
customModel.currency = Currency;
|
|
|
|
|
|
NSNumber *Revenue = dics[KMTG_Custom_Revenue];
|
|
if (Revenue != nil)
|
|
customModel.revenue = @([Revenue doubleValue]);
|
|
|
|
|
|
NSDictionary *AdNetworkUnitInfo = dics[KMTG_Custom_AdNetworkUnitInfo];
|
|
if(mtg_check_dict(AdNetworkUnitInfo))
|
|
customModel.adNetworkUnitInfo = AdNetworkUnitInfo;
|
|
|
|
|
|
customModel.isBidding = [dics[KMTG_Custom_IsBidding]boolValue];
|
|
|
|
|
|
NSString *AdType = dics[KMTG_Custom_DspId];
|
|
if(mtg_check_nsstring( AdType))
|
|
customModel.dspId = AdType;
|
|
|
|
|
|
NSString *DspId = dics[KMTG_Custom_AdType];
|
|
if(mtg_check_nsstring( DspId))
|
|
customModel.adType = DspId;
|
|
|
|
NSString *DspName = dics[KMTG_Custom_DspName];
|
|
if(mtg_check_nsstring( DspName))
|
|
customModel.dspName = DspName;
|
|
|
|
|
|
NSDictionary *AllInfo = dics[KMTG_Custom_AllInfo];
|
|
if(mtg_check_dict(AllInfo))
|
|
customModel.allInfo = AllInfo;
|
|
|
|
if(mtg_check_nsstring(dics[kMTG_mBridge_Version])){
|
|
customModel.extraData = @{kMTG_u_p_v:dics[kMTG_mBridge_Version]};
|
|
}
|
|
|
|
[MTGTrackAdRevenue trackAdRevenueWithAdRevenueModel:customModel];
|
|
|
|
}
|
|
|
|
}
|