插件地址:https://github.com/unity-plugins/Unity-Admob

2017.04.11测试使用发现GoogleMobileAds.framework有问题,导致出现Undefined symbols for architecture等错误


以下是测试过的完整插件包:

链接:http://pan.baidu.com/s/1c1YL1mg 密码:vi8q


无出错的GoogleMobileAds.framework:

链接:http://pan.baidu.com/s/1jHNdXNg 密码:bwyk


unity 版本:5.6.f3

Target minimum iOS Version: 8.0

全屏广告需要在unity发布设置或xcode中把所有方向都勾上,再用代码决定要保留哪些方向,这样手持设备广告的方向才能显示正确


AdmobManager.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using admob; public class AdmobManager : MonoBehaviour {
public string bannerID="ca-app-pub-3940256099942544/2934735716";
public string fullID="ca-app-pub-3940256099942544/4411468910";
public string rewardVideoID="ca-app-pub-3940256099942544/xxxxxxxxxx"; public string nativeBannerID="ca-app-pub-3940256099942544/2562852117"; Admob ad;
private bool _isinited; public static AdmobManager instance {
get{
return GameObject.Find("AdmobManager").GetComponent<AdmobManager>();
}
} void Awake(){
Debug.Log("start unity demo-------------");
gameObject.name="AdmobManager";
initAdmob();
} void Start () { } void Update () {
//ad.showInterstitial();
} void initAdmob(){
//isAdmobInited = true;
ad = Admob.Instance();
ad.bannerEventHandler += onBannerEvent;
ad.interstitialEventHandler += onInterstitialEvent;
ad.rewardedVideoEventHandler += onRewardedVideoEvent;
ad.nativeBannerEventHandler += onNativeBannerEvent;
ad.initAdmob(bannerID,fullID);
//ad.setTesting(true);
ad.setGender(AdmobGender.MALE);
string[] keywords = { "game","crash","male game"};
ad.setKeywords(keywords);
Debug.Log("admob inited -------------");
} void onInterstitialEvent(string eventName, string msg){
Debug.Log("handler onAdmobEvent---" + eventName + " " + msg);
if (eventName == AdmobEvent.onAdLoaded){
Admob.Instance().showInterstitial();
}else if(eventName==AdmobEvent.onAdClosed){
//Admob.Instance().loadInterstitial();
}
}
void onBannerEvent(string eventName, string msg){
Debug.Log("handler onAdmobBannerEvent---" + eventName + " " + msg);
}
void onRewardedVideoEvent(string eventName, string msg){
Debug.Log("handler onRewardedVideoEvent---" + eventName + " " + msg);
}
void onNativeBannerEvent(string eventName, string msg){
Debug.Log("handler onAdmobNativeBannerEvent---" + eventName + " " + msg);
} public bool isInterstitialReady(){
return ad.isInterstitialReady();
}
public void loadInterstitial(){
ad.loadInterstitial();
} public void showInterstitial(){
ad.showInterstitial();
} public void showRewardVideo(){
if (ad.isRewardedVideoReady()) ad.showRewardedVideo();
else ad.loadRewardedVideo(rewardVideoID);
} public void showbanner(AdSize size/*=AdSize.SmartBanner*/, int pos/*=AdPosition.BOTTOM_CENTER*/,int marginY=){
Admob.Instance().showBannerRelative(size, pos,marginY);
}
public void showbannerABS(AdSize size/*=AdSize.Banner*/,int x=,int y=){
Admob.Instance().showBannerAbsolute(size, x, y);
}
public void removebanner(){
Admob.Instance().removeBanner();
} public void showNative(int pos/*=AdPosition.BOTTOM_CENTER*/,int width=,int height=,int marginY=){
Admob.Instance().showNativeBannerRelative(new AdSize(width,height), pos, marginY,nativeBannerID);
}
public void showNativeABS(int width=,int height=,int x=,int y=){
Admob.Instance().showNativeBannerAbsolute(new AdSize(width,height), x, y, nativeBannerID);
}
public void removeNative(){
Admob.Instance().removeNativeBanner();
} }

Editor文件夹下PBXProjectSetting.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode; public class PBXProjectSetting{ //该属性是在build完成后,被调用的callback
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path){
// BuildTarget需为iOS
if (buildTarget != BuildTarget.iOS) return;
Debug.Log("===PostProcessBuildAttribute();==="); string projPath = PBXProject.GetPBXProjectPath(path);
PBXProject pbxProject = new PBXProject(); pbxProject.ReadFromString(File.ReadAllText(projPath));
string target = pbxProject.TargetGuidByName("Unity-iPhone"); // 关闭Bitcode
pbxProject.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); // 添加framework, admob需要的所有framework
pbxProject.AddFrameworkToProject(target, "AdSupport.framework", false);
pbxProject.AddFrameworkToProject(target, "EventKit.framework", false);
pbxProject.AddFrameworkToProject(target, "EventKitUI.framework", false);
pbxProject.AddFrameworkToProject(target, "CoreTelephony.framework", false);
pbxProject.AddFrameworkToProject(target, "StoreKit.framework", false);
pbxProject.AddFrameworkToProject(target, "MessageUI.framework", false); //保存到本地
File.WriteAllText(projPath,pbxProject.WriteToString());
}
}

unity admob的更多相关文章

  1. Unity3D添加Admob广告

    重要提示:             貌似play2014年8月之后不会再支持admob的SDK方式的广告了.github上已经有了 Unity AdMob (Google Play Services) ...

  2. Unity3d开发集成Google Admob广告增加收入

    在Unity游戏中植入广告是Unity 游戏产品增加收入的一种重要方式,常用的广告有谷歌Admob,百度ssp,腾讯广点通,unity公司的unityads等等,而使用的最多的应该属于谷歌Admob, ...

  3. unity接入谷歌ADMob注意事项

    应用不显示广告,可能是广告sdk 依赖项没有注册 dependencies { implementation fileTree(dir: 'bin', include: ['*.jar']) impl ...

  4. 【Unity与Android】02-在Unity导出的Android工程中接入Google Admob广告

    我在上一篇文章 [Unity与Android]01-Unity与Android交互通信的简易实现) 中介绍了Unity与Android通讯的基本方法. 这一篇开始进入应用阶段,这次要介绍的是如何在An ...

  5. Unity3D IOS IPhone添加Admob的方法

    原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140403119293/ 首先阅读官方文档https://developers. ...

  6. Unity3d Android程序嵌入Admob广告条

    原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140441353482/ Seems like using a simple A ...

  7. 2017年Unity游戏开发视频教程(入门到精通)

    本文是我发布的一个Unity游戏开发的学习目录,以后我会持续发布一系列的游戏开发教程,都会更新在这个页面上,适合人群有下面的几种: 想要做独立游戏的人 想要找游戏开发相关工作的人 对游戏开发感兴趣的人 ...

  8. iOS平台添加Google Admob -1/2(Unity3D开发之七)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=567 Unity调用iOS还是非 ...

  9. iOS平台添加Google Admob -2/2(Unity3D开发之八)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=572 在上一篇文章中主要是编写了 ...

随机推荐

  1. android切换前后台状态监听

    public class BaseApplication extends Application { private static BaseApplication instance; /** * 当前 ...

  2. SAS DATA ENCODING 解决odbc乱码问题

    首先获取编码格式: %PUT %SYSFUNC(getOption(ENCODING)); libname findoout ODBC datasrc=SurveyReport user=shendu ...

  3. CentOS用户和用户组管理

    groupadd grptest1  按照系统默认的gid创建组.根uid一样,gid也是从1000开始的. groupadd -g 1008 grptest2    创建gid=1008的用户组:g ...

  4. java中原生的发送http请求(无任何的jar包导入)

    package com.teamsun.pay.wxpay.util; import java.io.BufferedReader; import java.io.IOException; impor ...

  5. time_base

    From:http://blog.csdn.net/supermanwg/article/details/14521869 FFMPEG的很多结构中有AVRational time_base;这样的一 ...

  6. nodejs中mysql用法

    nodejs也算是一篇脚本了我们来看nodejs如何使用mysql数据库了有了它们两组合感觉还是非常的不错哦,下面一起来看nodejs中使用mysql数据库的示例,希望能够帮助到各位. <scr ...

  7. js对象以及DOM

    JavaScript的对象 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array.Date.R ...

  8. 16 Linux系统的文件压缩、解压与归档

    这一节的内容,我们详细介绍下Linux的文件压缩.解压缩与文件归档的内容,也就是tar.gzip.bzip2.xz等命令的内容: 压缩(compress)与解压缩(uncompress) Linux系 ...

  9. oracle补齐日期

    生成日期列表 SELECT to_date( as first_login_day, ROWNUM - FROM DUAL CONNECT BY ROWNUM <= trunc(sysdate ...

  10. mybatis-plus 从2.x到3.x升级指南

      Mybatis-Plus mybatis-plus 2.x 到 3.x 有以下改进 分页查询可以直接返回Ipage<T>的子类(下面会有详细使用说明) Wrapper<T> ...