菜单

常见问题

未找到字段 currentActivity 或类型签名

请打包后在真机中测试


Android SDK 区分 Android X 与 Android Support 版本吗

不区分


通过 API 上报数据返回 404 怎么办

请求方式需要为 POST,目前不支持 GET 请求。


通过 API 上报数据响应结果中 code=500、5001、5002 是为什么

响应结果:

{
    "code": 500,
    "msg": "系统错误"
}
  • 500:数据非法
  • 5001:检查 body 参数格式是否是数组。
  • 5002:检查 body 是否为空数组。


Unity 环境下使用 iOS 模拟器调试

se ios sdk 1.2.7.2 开始交付模式为 .xcframwork , 在unity环境下只保留了ios-arm64 ,否则会编译报错。

unity环境下如果想使用ios模拟器调试,需要下载ios 原生sdk:  https://help.solar-engine.com/cn/docs/sFfJSt

解压后使用 SolarEngineSDK.xcframework/ios-x86_64-simulator 替换unity项目中的Assets/Plugins/iOS/framework/SolarEngineSDK.xcframework/ios-arm64

SESDKRemoteConfig.xcframework/ios-x86_64-simulator 替换unity项目中的Assets/Plugins/iOS/framework/SESDKRemoteConfig.xcframework/ios-arm64

调试完成后发布时记得换回 ios-arm64 。

变现广告展示事件对接三方渠道(Android)

Admob 对接SolarEngine SDK变现广告展示事件

Admob->Android对接文档

每种广告格式都有一个 OnPaidEventListener。在广告事件的生命周期内,Google 移动广告 SDK 会监控展示事件,并用赚取的价值调用处理脚本。

以下代码演示了如何处理激励广告的付费事件:

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd rewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "AD_UNIT_ID",
      adRequest, new RewardedAdLoadCallback(){
        @Override
        public void onAdLoaded(@NonNull RewardedAd ad) {
          rewardedAd = ad;
          // Set paid event listener
          rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
            @Override
            public void onPaidEvent(AdValue adValue) {
              // TODO: Send the impression-level ad revenue information to your
              //preferred analytics server directly within this callback.

              // Extract the impression-level ad revenue data.
              double valueMicros = adValue.getValueMicros();
              String currencyCode = adValue.getCurrencyCode();
              int precision = adValue.getPrecisionType();

              // Get the ad unit ID.
              String adUnitId = rewardedAd.getAdUnitId();
              
              AdapterResponseInfo loadedAdapterResponseInfo = rewardedAd.getResponseInfo().
                  getLoadedAdapterResponseInfo();
              String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
              String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
              String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
              String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();

              Bundle extras = rewardedAd.getResponseInfo().getResponseExtras();
              String mediationGroupName = extras.getString("mediation_group_name");
              String mediationABTestName = extras.getString("mediation_ab_test_name");
              String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
              //SE SDK处理逻辑
              SEAdImpEventModel seAdImpEventModel =  new SEAdImpEventModel();
              //变现平台名称
              seAdImpEventModel.setAdNetworkPlatform(adSourceName);
              //聚合平台标识,admob SDK 设置成 "admob"
              seAdImpEventModel.setMediationPlatform("admob");
              //展示广告的类型,实际接入的广告类型,以此例激励视频为例adType = 1
              seAdImpEventModel.setAdType(1);
              //变现平台的应用ID
              seAdImpEventModel.setAdNetworkAppID(adSourceId);
              //变现平台的变现广告位ID
              seAdImpEventModel.setAdNetworkADID(adUnitId);
              //广告ECPM
              seAdImpEventModel.setEcpm(valueMicros/1000);
              //变现平台货币类型
              seAdImpEventModel.setCurrencyType(currencyCode);
              //填充成功填TRUE即可
              seAdImpEventModel.setRenderSuccess(true);
              //如果需要设置变现广告事件的自定义属性可参考文档示例,这里不再设置
              SolarEngineManager.getInstance().trackAdImpression(seAdImpEventModel);
              //end
              }
            });
          }
       });
  }
}

IronSource对接SolarEngine SDK变现广告展示事件

IronSource->Android对接文档

以下代码演示了如何处理激励广告的付费事件:

/** 
Invoked when the ad was displayed successfully and the impression data was recorded 
**/ 
@Override 
public void onImpressionSuccess(ImpressionData impressionData) { 
     // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened. 
     // For banners, the impression is reported on load success.  Log.d(TAG, "onImpressionSuccess" + impressionData); 
	if (impressionData != null) 
	{ 
		 Bundle bundle = new Bundle(); 
		 bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource");  
		 bundle.putString(FirebaseAnalytics.Param.AD_SOURCE,impressionData.adNetwork());  
		 bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getAdUnit());  	
		 bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getInstanceName());
		 bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD");  
		 bundle.putDouble(FirebaseAnalytics.Param.VALUE, impressionData.getRevenue());  
		 
		 mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle);  
		 
	     //SE SDK处理逻辑
         SEAdImpEventModel seAdImpEventModel =  new SEAdImpEventModel();
         //变现平台名称
         seAdImpEventModel.setAdNetworkPlatform(impressionData.adNetwork());
         //聚合平台标识,IronSource SDK 设置成 "ironSource"
         seAdImpEventModel.setMediationPlatform("ironSource");
         //展示广告的类型,实际接入的广告类型,以此例激励视频为例adType = 1,具体请参考文档中的adType字段描述
         seAdImpEventModel.setAdType(1);
         //变现平台的应用ID,选填项,可以填SE SDK的appKey也可以不填
         seAdImpEventModel.setAdNetworkAppID("---SE SDK的appKey---");
         //变现平台的变现广告位ID
         seAdImpEventModel.setAdNetworkADID(impressionData.getInstanceId());
         //广告ECPM
         seAdImpEventModel.setEcpm(impressionData.getRevenue()*1000);
         //变现平台货币类型,IronSource币种默认为美元
         seAdImpEventModel.setCurrencyType("USD");
         //填充成功填TRUE即可
         seAdImpEventModel.setRenderSuccess(true);
         //如果需要设置变现广告事件的自定义属性可参考文档示例,这里不再设置
         SolarEngineManager.getInstance().trackAdImpression(seAdImpEventModel);
         //end
	} 
}

MAX对接SolarEngine SDK变现广告展示事件

Max->Android对接文档

代码示例:

@Override
void onAdRevenuePaid(final MaxAd ad)
{
  double revenue = ad.getRevenue(); // In USD

  // Miscellaneous data
  String countryCode = AppLovinSdk.getInstance( context ).getConfiguration().getCountryCode(); // "US" for the United States, etc - Note: Do not confuse this with currency code which is "USD"
  String networkName = ad.getNetworkName(); // Display name of the network that showed the ad
  String adUnitId = ad.getAdUnitId(); // The MAX Ad Unit ID
  MaxAdFormat adFormat = ad.getFormat(); // The ad format of the ad (e.g. BANNER, MREC, INTERSTITIAL, REWARDED)
  String placement = ad.getPlacement(); // The placement this ad's postbacks are tied to
  String networkPlacement = ad.getNetworkPlacement(); // The placement ID from the network that showed the ad
  
  //SE SDK处理逻辑
  SEAdImpEventModel seAdImpEventModel =  new SEAdImpEventModel();
  //变现平台名称
  seAdImpEventModel.setAdNetworkPlatform( ad.getNetworkName());
  //聚合平台标识,Max SDK 设置成 "Max"
  seAdImpEventModel.setMediationPlatform("Max");
  //展示广告的类型,以激励视频为例,adType = 1
  seAdImpEventModel.setAdType(1);
  //变现平台的应用ID,选填项,可以填SE SDK的appKey也可以不填 
  seAdImpEventModel.setAdNetworkAppID("---SE SDK的appKey---");
  //变现平台的变现广告位ID
  seAdImpEventModel.setAdNetworkADID(ad.getNetworkPlacement());
  //广告ECPM
  seAdImpEventModel.setEcpm(ad.getRevenue()*1000);
  //变现平台货币类型,Max币种类型为USD
  seAdImpEventModel.setCurrencyType('USD');
  //填充成功填TRUE即可
  seAdImpEventModel.setRenderSuccess(true);
  SolarEngineManager.getInstance().trackAdImpression(seAdImpEventModel);
  //如果需要设置变现广告事件的自定义属性可参考文档示例,这里不再设置
  //end
  
}
TopOn对接SolarEngine SDK变现广告展示事件

TopOn->Android对接文档

代码示例:

ATAdSourceStatusListener adSourceStatusListener = new ATAdSourceStatusListener() {
    @Override
    public void onAdSourceBiddingAttempt(ATAdInfo adInfo) {
        Log.i(TAG, "onAdSourceBiddingAttempt: " + adInfo.toString());
        //SE SDK处理逻辑
        SEAdImpEventModel seAdImpEventModel =  new SEAdImpEventModel();
        //变现平台名称,可参考network_firm_id所对应的具体变现平台名称,这里以network_firm_id = 6表示Mintegral为例
        //network_firm_id详细说明地址:https://docs.toponad.com/#/zh-cn/ios/ios_doc/ios_sdk_callback_access?id=network_firm_id
        seAdImpEventModel.setAdNetworkPlatform('"Mintegral");
        //聚合平台标识,TopOn SDK 设置成 "TopOn"
        seAdImpEventModel.setMediationPlatform("TopOn");
        //展示广告的类型,实际接入的广告类型,以激励视频为例adType = 1
        seAdImpEventModel.setAdType(1);
        //变现平台的应用ID,选填项,可以填SE SDK的appKey也可以不填 
        seAdImpEventModel.setAdNetworkAppID("---SE SDK的appKey---");
        //变现平台的变现广告位ID
        seAdImpEventModel.setAdNetworkADID(adInfo.getNetworkPlacementId());
        //广告ECPM
        seAdImpEventModel.setEcpm(adInfo.getEcpm());
        //变现平台货币类型
        seAdImpEventModel.setCurrencyType(adInfo.getCurrency());
        //填充成功填TRUE即可
        seAdImpEventModel.setRenderSuccess(true);
        //如果需要设置变现广告事件的自定义属性可参考文档示例,这里不再设置
        SolarEngineManager.getInstance().trackAdImpression(seAdImpEventModel);
        //end
    }

    @Override
    public void onAdSourceBiddingFilled(ATAdInfo adInfo) {
        Log.i(TAG, "onAdSourceBiddingFilled: " + adInfo.toString());
    }

    @Override
    public void onAdSourceBiddingFail(ATAdInfo adInfo, AdError adError) {
        Log.i(TAG, "onAdSourceBiddingFail Info: " + adInfo.toString());
        Log.i(TAG, "onAdSourceBiddingFail error: " + adError.getFullErrorInfo());
    }

    @Override
    public void onAdSourceAttempt(ATAdInfo adInfo) {
        Log.i(TAG, "onAdSourceAttemp: " + adInfo.toString());
    }

    @Override
    public void onAdSourceLoadFilled(ATAdInfo adInfo) {
        Log.i(TAG, "onAdSourceLoadFilled: " + adInfo.toString());
    }

    @Override
    public void onAdSourceLoadFail(ATAdInfo adInfo, AdError adError) {
        Log.i(TAG, "onAdSourceLoadFail Info: " + adInfo.toString());
        Log.i(TAG, "onAdSourceLoadFail error: " + adError.getFullErrorInfo());
    }
};

atRewardVideoAd.setAdSourceStatusListener(adSourceStatusListener);//激励视频广告
//atInterstitial.setAdSourceStatusListener(adSourceStatusListener);//插屏广告
//atSplashAd.setAdSourceStatusListener(adSourceStatusListener);//插屏广告
//atNative.setAdSourceStatusListener(adSourceStatusListener);//原生广告
//atBannerView.setAdSourceStatusListener(adSourceStatusListener);//横幅广告

变现广告展示事件对接三方渠道(iOS)

Admob 对接SolarEngine SDK变现广告展示事件

iOS 对接文档

每种广告格式都有一个类型为 GADPaidEventHandler 的 paidEventHandler 属性。在广告事件的生命周期内,Google 移动广告 SDK 会监控展示事件,并用赚取的价值调用处理脚本。

示例代码

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()
@property(nonatomic, strong) GADRewardedAd *rewardedAd;
@end

@implementation ViewController
- (void)requestRewardedAd {
  __weak ViewController *weakSelf = self;

  GADRequest *request = [GADRequest request];
  [GADRewardedAd
   loadWithAdUnitID:@"AD_UNIT_ID"
   request:request
   completionHandler:^(GADRewardedAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Rewarded ad failed to load with error: %@", [error localizedDescription]);
      return;
    }
    self.rewardedAd = ad;
    self.rewardedAd.paidEventHandler = ^void(GADAdValue *_Nonnull value){
      ViewController *strongSelf = weakSelf;

      NSDecimalNumber *value; = value.value;
      GADAdNetworkResponseInfo *adInfo = strongSelf.rewardedAd.responseInfo.loadedAdNetworkResponseInfo;

      SEAdImpressionEventAttribute *attribute = [[SEAdImpressionEventAttribute alloc] init];
      // 变现平台名称
      attribute.adNetworkPlatform = adInfo.adSourceName;
      // 变现平台的应用 ID,
      attribute.adNetworkAppID = adInfo.adSourceID;
      // 展示广告的类型,实际接入的广告类型
      attribute.adType = 5;// 参考文档中的adType字段描述
      // 变现平台的变现广告位 ID
      attribute.adNetworkPlacementID = strongSelf.rewardedAd.adUnitID;
      // 币种,
      attribute.currency = value.currencyCode;
      // admob SDK ecpm 的单位是美元
      attribute.ecpm = [value.value doubleValue]*1000;
      // 聚合平台标识,admob SDK 设置成 "admob"
      attribute.mediationPlatform = @"admob";
      // 广告是否渲染成功
      attribute.rendered = YES;
      [[SolarEngineSDK sharedInstance] trackAdImpressionWithAttributes:attribute];
    };
  ]};
}


IronSource对接SolarEngine SDK变现广告展示事件

iOS对接文档

IronSource监听回调代码

+ (void)addImpressionDataDelegate:(id<ISImpressionDataDelegate>)delegate;

Demo示例

设置代理,监听回调

self.impressionDataDelegate = [[DemoImpressionDataDelegate alloc] init];

[IronSource addImpressionDataDelegate:self.impressionDataDelegate];

自定义类,用来接受IronSource回调

@interface DemoImpressionDataDelegate : NSObject<ISImpressionDataDelegate>

@end

@implementation DemoImpressionDataDelegate


IronSource参考文档链接

当广告成功展示数据时调

- (void)impressionDataDidSucceed:(ISImpressionData *)impressionData {
    SEAdImpressionEventAttribute *attribute = [[SEAdImpressionEventAttribute alloc] init];
    // 变现平台名称
	attribute.adNetworkPlatform = impressionData.ad_network

    // 展示广告的类型
    attribute.adType = 1; 填入用户实际的广告类型的广告类型,参考文档中的adType字段描述
    // 变现平台的变现广告位 ID
    attribute.adNetworkPlacementID = impressionData.placement;
    // 币种,美元
    attribute.currency = @"USD";
    // ironsource SDK ecpm 的单位是美元
    attribute.ecpm = impressionData.revenue*1000;
    // 聚合平台标识,ironsource SDK 设置成 "ironsource"
    attribute.mediationPlatform = @"ironsource";
    // 广告是否渲染成功
    attribute.rendered = YES;
    [[SolarEngineSDK sharedInstance] trackAdImpressionWithAttributes:attribute];

}
@end


MAX对接SolarEngine SDK变现广告展示事件

MAX iOS对接文档

调用示例

// 检测到广告收益时MAX的回调

- (void)didPayRevenueForAd:(MAAd *)ad
{

    SEAdImpressionEventAttribute *attribute = [[SEAdImpressionEventAttribute alloc] init];
    // 变现平台名称
	attribute.adNetworkPlatform = ad.networkName;
	// 变现平台的应用 ID,
    attribute.adNetworkAppID = "";
    // 展示广告的类型
    attribute.adType = ad.format; // MAAdFormat 需要转换成对应的广告类型,参考文档中的adType字段描述
    // 变现平台的变现广告位 ID
    attribute.adNetworkPlacementID = ad.networkPlacement;
    // 币种,美元
    attribute.currency = @"USD";
    // MAX SDK ecpm 的单位是美元
    attribute.ecpm = ad.revenue*1000;
    // 聚合平台标识,max SDK 设置成 "max"
    attribute.mediationPlatform = @"max";
    // 广告是否渲染成功
    attribute.rendered = YES;
    [[SolarEngineSDK sharedInstance] trackAdImpressionWithAttributes:attribute];
}


TopOn 对接SolarEngine SDK变现广告展示事件

TopOn iOS对接文档

调用示例

// TopOn SDK在回调方法最后的extra参数返回广告源的具体信息,

- (void)didFinishLoadingADSourceWithPlacementID:(NSString *)placementID extra:(NSDictionary*)extra {

	//不同的广告对应的key,不同,例如这里是banner广告则使用kATBannerDelegateExtraNetworkIDKey
    int network_firm_id = [extra[kATBannerDelegateExtraNetworkIDKey] intValue];
    
    NSString* network_placement_id = extra[kATADDelegateExtraNetworkPlacementIDKey];
    NSString* adunit_format = extra[kATADDelegateExtraFormatKey];

	//不同的广告对应的key不同,例如这里是banner广告则使用 kATBannerDelegateExtraAdSourceIDKey
	NSString* adsource_id = extra[kATBannerDelegateExtraAdSourceIDKey];

    //不同的广告对应的key不同,例如这里是banner广告则使用 kATBannerDelegateExtraPrice
    double adsource_price = [extra[kATBannerDelegateExtraPrice] doubleValue];

    NSString* precision = extra[kATADDelegateExtraPrecisionKey];
	NSString* currency = extra[kATADDelegateExtraCurrencyKey];

    SEAdImpressionEventAttribute *attribute = [[SEAdImpressionEventAttribute alloc] init];
    // 变现平台名称
    // https://docs.toponad.com/#/zh-cn/ios/ios_doc/ios_sdk_callback_access?id=network_firm_id
	attribute.adNetworkPlatform =  // network_firm_id 参考 Network Firm Id Table 转换成字符串传给SDK,如6则对应Mintegral

    // 展示广告的类型
    attribute.adType = ; 需要把 adunit_format 转换成SE SDK对应的枚举,参考文档中的adType字段描述
    // 变现平台的变现广告位 ID
    attribute.adNetworkPlacementID = network_placement_id;
    // 币种,美元
    attribute.currency = currency;
    // SDK ecpm 的单位是美元
    attribute.ecpm = adsource_price;
    // 聚合平台标识,topon SDK 设置成 "topon"
    attribute.mediationPlatform = @"topon";
    // 广告是否渲染成功
    attribute.rendered = YES;
    [[SolarEngineSDK sharedInstance] trackAdImpressionWithAttributes:attribute];
    
    
}



变现广告展示事件对接三方渠道(Flutter)

IronSource Flutter对接文档

IronSource-Flutter 调用示例:


 @override
 void onImpressionSuccess(IronSourceImpressionData? impressionData) {

     SEAppImpressionData appImpressionData = SEAppImpressionData();
     // 变现平台
     appImpressionData.adNetworkPlatform = impressionData?.adNetwork;
     // 展示广告的类型 , 根据IS具体的广告类型转换成SolarEngine的枚举,具体看IS和SolarEngine的文档介绍,示例如下
     appImpressionData.adType = 2;
     // 变现平台的应用 ID 
     // appImpressionData.adNetworkAppID = ?;
     // 变现平台的变现广告位 ID 
     appImpressionData.adNetworkADID = impressionData?.placement ;
     // 聚合平台标识,ironsource SDK 设置成 "ironsource"
     appImpressionData.mediationPlatform = @"ironsource";
     // 广告ECPM
     appImpressionData.ecpm = impressionData?.revenue;
     // 展示收益的货币种类
     appImpressionData.currencyType = "USD"; 
     // 广告是否渲染成功
     appImpressionData.isRenderSuccess = true;
     SolarEngine.trackAppImpress(appImpressionData);
}

Topon Flutter广告变现字段说明


变现广告展示事件对接三方渠道(Unity)

Admob 对接SolarEngine SDK变现广告展示事件

Unity对接文档

每种广告格式都有一个 OnAdPaid 事件。在广告事件的生命周期内,Google 移动广告 SDK 会监控展示事件,并用表示赚取的价值的 AdValue 调用处理脚本。

using GoogleMobileAds.Api;
private RewardedAd _rewardedAd;
private void LoadRewardedAd()
{
   // Send the request to load the ad.
   AdRequest adRequest = new AdRequest();
   RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd rewardedAd, LoadAdError error) =>
   {
      // If the operation failed with a reason.
      if (error != null)
      {
         Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
         return;
      }
      _rewardedAd=rewardedAd;
      _rewardedAd.OnAdPaid += this.HandleAdPaidEvent;
   });
}
 public void HandleAdPaidEvent(AdValue adValue)
    {
        // TODO: Send the impression-level ad revenue information to your
        // preferred analytics server directly within this callback.

        ResponseInfo responseInfo = _rewardedAd.GetResponseInfo();
        
        AdapterResponseInfo loadedAdapterResponseInfo = responseInfo.GetLoadedAdapterResponseInfo();

        ImpressionAttributes impressionAttributes = new ImpressionAttributes();
        //变现平台名称
        impressionAttributes.ad_platform = loadedAdapterResponseInfo.AdSourceName;
        // 变现平台的应用 ID,
        impressionAttributes.ad_appid = loadedAdapterResponseInfo.AdSourceId;
        //聚合平台标识,admob SDK 设置成 "admob"
        impressionAttributes.mediation_platform = "admob";
        // 变现平台的变现广告位 ID
        impressionAttributes.ad_id = _rewardedAd.GetAdUnitID();
       // 展示广告的类型,实际接入的广告类型,参考文档中的adType字段描述
       impressionAttributes.ad_type = 1;
       // 币种,
       impressionAttributes.currency_type = adValue.CurrencyCode;
       // admob SDK ecpm
       impressionAttributes.ad_ecpm = (double)adValue.Value / 1000;
        // 广告是否渲染成功
       impressionAttributes.is_rendered = true;
       SolarEngine.Analytics.trackAdImpression(impressionAttributes);


    }



Unity手动集成iOSSDK

1、删除SolarEngineNet/iOS 文件夹

2、删除SolarEngineNet/Editor/SolarEnginePlugins/RemoteConfigSDK/iOS 文件夹

3、参考 iOS文档 获取SDK,将SDK放入工程中Assets/Plugins/SolarEngine/iOS

添加SDK所需依赖框架

  • 使用 Security.framework 来存储设备标识
  • 使用 CoreTelephony.framework 来获取运营商信息
  • 使用 AdSupport.framework 来获取 Advertising Identifier 信息
  • 使用 SystemConfiguration.framework 来检查当前网络环境
  • 使用 libsqlite3.dylib 用来存储数据
  • 使用 AdServices.framework 获取广告归因数据


添加方法:

在工程目录中,选择 TARGETS-->Build Phases-->Link Binary With Libraries-->+ -->选择 Security.framework、SystemConfiguration.framework、CoreTelephony.framework、AdSupport.framework、libsqlite3.dylib 、AdServices.framework等库文件。


UnityFramework Target中添加-Objc参数,否则SDK初始化失败

添加方式: TARGETS -> UnityFramework -> Build Settings -> Other liner flags -> -Objc

新版 Xcode .dylib 以 .tbd 为后缀,添加对应动态库。

注:

1.如上动态库请全部配置,避免报错。

2.Xcode 7 及以上版本,.dylib后缀结尾的系统库均更改为.tbd 后缀结尾。

Unity解决iOS的ODMInfo的冲突(1.3.0.9及以上版本)

iOS ODMInfo依赖于GoogleAdsOnDeviceConversion.xcframework、GoogleUtilities.xcframework、nanopb.xcframework

如果你的项目也使用了Firebase的功能可能会出现依赖版本不一致出现冲突,解决冲突操作如下:

打开 SolarEngineNet-SolarEnginePlugins-ODMInfo-Editor-Dependencies文件

注释其中有冲突的pod节点(一般都是GoogleAdsOnDeviceConversion)

配置好后重新导出iOS项目,卸载App重装,搜索关键字ODM 关键字

Unity 旧版本(1.3.0.0之前)升级到1.3.0.0之后

如果您之前接入的是我们非.unitypackage的版本,请确认,删除您项目中之前手动放入的solorengineSDK:

  1. Android/libs/se_remote_config_unity_bridge.jar
  2. Android/libs/solar_engine_unity_bridge.jar
  3. Editor/InstallSESDKXcode.cs
  4. Editor/Resources/SolarEngineSettings.asset
  5. Editor/SolarEngineSettings.cs
  6. Editor/SolarEngineSettingsEditor.cs
  7. iOS/framework/SESDKRemoteConfig.xcframework
  8. iOS/framework/SolarEngineSDK.xcframework
  9. iOS/wrappers/SESDKRemoteConfigUnityBridge.h
  10. iOS/wrappers/SESDKRemoteConfigUnityBridge.mm
  11. iOS/wrappers/SolarEngineSDKUnityBridge.h
  12. iOS/wrappers/SolarEngineSDKUnityBridge.mm
  13. iOS/wrappers/SolarEngineUnityAppDelegate.h
  14. iOS/wrappers/SolarEngineUnityAppDelegate.m
  15. Newtonsoft.Json.dll
  16. SESDKRemoteConfig.cs
  17. SolarEngine.cs


Unity升级iOSSDK版本:

因iOS pod命令拉取SDK有缓存,所以如您想升级iOSSDK版本,需要在SDK Edit Setting面板上指定您想要的版本或指定最新的版本,然后点击Apply即可


Unity打包apk运行报错:java.lang.ClassNotFoundException: Didn't find class "com.reyun.solar.engine.SolarEngineManager"

确认一下Unity项目中是否有solarengine对应的aar包存在,例:com.reyun.solar.engine.xxxx.xxx.aar

Unity 接入安卓SDK拉取失败:

执行强制拉取:

Assets > External Dependency Manager > Android Resolver > Resolve

Assets > External Dependency Manager > Android Resolver > Force Resolve)




最近修改: 2025-08-21Powered by