Unity项目添加广告,内购测试并上线APP Store

本文详细介绍了如何在Unity项目中添加Admob广告并进行真机测试,包括设置广告ID、解决编译问题和监听事件。接着讲解了添加内购功能,包括iOS文件设置、沙盒测试及Unity内购设置。最后,文章阐述了打包上传到App Store的过程,以及遇到的各种问题和解决方案,如Xcode编译错误、版本提交被拒等。
摘要由CSDN通过智能技术生成

Ⅰ.添加广告并真机测试

1.用示例广告ID演示Admob Unity 插件

参考(admob官方文字教程)

  • 导入插件包

  • 设置Admob应用ID

  • 示例广告id(测试时务必用示例广告id)

注意导出的app包主文件已变,不要打开错了。

(即在xcode内打开的主文件由.xcodeproj变成.xcworkspace)

  • 添加一个示例激励广告

...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardBasedVideoAd rewardBasedVideo;
    ...

    public void Start()
    {
        #if UNITY_ANDROID//示例广告的appID
            string appId = "ca-app-pub-3940256099942544~3347511713";
        #elif UNITY_IPHONE
            string appId = "ca-app-pub-3940256099942544~1458002511";
        #else
            string appId = "unexpected_platform";
        #endif

        // Initialize the Google Mobile Ads SDK.初始化
        MobileAds.Initialize(appId);

        // Get singleton reward based video ad reference.激励广告是单例模式,把脚本关联上单例
        this.rewardBasedVideo = RewardBasedVideoAd.Instance;

        this.RequestRewardBasedVideo();//尽早加载广告资源
    }

    private void RequestRewardBasedVideo()
    {
        #if UNITY_ANDROID//示例广告ID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create an empty ad request.创建一个新广告请求
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded video ad with the request.加载
        this.rewardBasedVideo.LoadAd(request, adUnitId);
    }
}

hello world示例里创建的广告需求

  • 广告事件

...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardBasedVideoAd rewardBasedVideo;
    ...

    public void Start()
    {
        // Get singleton reward based video ad reference.
        this.rewardBasedVideo = RewardBasedVideoAd.Instance;

        // Called when an ad request has successfully loaded.
        rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded;
        // Called when an ad request failed to load.
        rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
        // Called when an ad is shown.
        rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened;
        // Called when the ad starts to play.
        rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted;
        // Called when the user should be rewarded for watching a video.
        rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;
        // Called when the ad is closed.
        rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed;
        // Called when the ad click caused the user to leave the application.
        rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication;

        this.RequestRewardBasedVideo();
    }

    private void RequestRewardBasedVideo()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded video ad with the request.
        this.rewardBasedVideo.LoadAd(request, adUnitId);
    }

    public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
    }

    public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardBasedVideoFailedToLoad event received with message: "
                             + args.Message);
    }

    public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
    }

    public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
    }

    public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoClosed event received");
    }

    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardBasedVideoRewarded event received for "
                        + amount.ToString() + " " + type);
    }

    public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
    }
}

  • 展示广告&重新加载一段新的广告

2.使用自己创建的真实广告ID并真机测试

参考来源-admob测试广告

上面说的是用示例广告测试,下面我们说真实广告真机测试。

3.问题爬坑:

1.编译时

bug:framework not found iosurface for architecture arm64

bug:framework not found fileprovider for architecture arm64

解决方法:参考

点击上面的地址,下个9.0以上的版本,下完解压后不用安装,直接打开包内容。按照路径拷贝(拷贝到iPhoneOS.sdk而不是iPhonexx.x.sdk下面)。拷贝完在xcode打开的项目里清除,然后编译就OK了。

2.注意不要搞混id

Start()里是该应用注册的admob id,Request()里是该应用的广告单元id。

3.注册代理来监听事件的位置

激励广告常用两个事件:OnAdRewarded (发放奖励&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值