移動(dòng)平臺(tái)廣告解決方案--Admob

本文知乎同步鏈接:https://zhuanlan.zhihu.com/p/43807044

一沥割、簡(jiǎn)介

AdMob 是移動(dòng)電話廣告市場(chǎng)饶辙,可提供用戶在移動(dòng)電話網(wǎng)絡(luò)上播放廣告。2006年AdMob創(chuàng)建于加州弟断。移動(dòng)網(wǎng)站(Mobile site)可選擇加入AdMob樊卓,并啟用AdMob的廣告輪播,廣告則在AdMob網(wǎng)站中置放短蜕。目前iPhone與Android手機(jī)上皆有此功能氢架。2009年11月9日Google宣布以7億5千萬(wàn)股份購(gòu)入AdMob,正式投入移動(dòng)設(shè)備上的廣告市場(chǎng)朋魔。

Admob覆蓋200多個(gè)國(guó)家岖研,是美國(guó)最大的手機(jī)廣告平臺(tái)。

icon

二、廣告類型

總共分四種孙援。

分別為:Banner(橫幅廣告) 害淤、Interstitial(插頁(yè)廣告)、Rewarded Video(激勵(lì)廣告)拓售。

Banner(橫幅廣告):最常見(jiàn)的窥摄,就是平時(shí)看到的屏幕的底部或者頂部有一個(gè)橫條的廣告條。

Interstitial(插頁(yè)廣告):類似啟動(dòng)頁(yè)廣告础淤,整個(gè)屏幕顯示一副廣告崭放。

Rewarded Video(激勵(lì)廣告):這個(gè)玩國(guó)外游戲經(jīng)常會(huì)看到,你看完一個(gè)廣告視頻鸽凶,游戲會(huì)獎(jiǎng)勵(lì)你一些道具或者其他的什么(這個(gè)獎(jiǎng)勵(lì)是一個(gè)整數(shù)币砂,在AdMob中可以設(shè)置數(shù)量,用戶看完視頻會(huì)得到這個(gè)數(shù)量的獎(jiǎng)勵(lì)玻侥,比如獎(jiǎng)勵(lì)3瓶藥水决摧,3條生命等。)凑兰。


廣告單元

三掌桩、 實(shí)施過(guò)程

unity引擎在接入Admob廣告時(shí),過(guò)程非常簡(jiǎn)單:

1姑食、首先下載googleads-mobile-unity拘鞋, 鏈接為:https://github.com/googleads/googleads-mobile-unity

注意:點(diǎn)擊上圖紅色部分releases跳轉(zhuǎn)的位置可以選擇自己需要的SDK版本。下載完插件矢门,把插件里包含的GoogleMobileAds.unitypackage的文件導(dǎo)入你的項(xiàng)目。 導(dǎo)入項(xiàng)目后你的project里面會(huì)出現(xiàn)以下文件灰蛙。

2祟剔、申請(qǐng)廣告id

(1)前往AdMob官網(wǎng)注冊(cè)賬號(hào),使用自己的Google賬號(hào)即可(已注冊(cè)的童鞋跳過(guò)此步驟)摩梧;

? ? ? ? 鏈接:https://www.google.com/admob/

(2)注冊(cè)完成后物延,登陸賬號(hào),即可進(jìn)入AdMob管理中心仅父,如下所示:

在此界面叛薯,可點(diǎn)擊左側(cè)邊欄中的選項(xiàng)進(jìn)行信息設(shè)置,在此不在贅述笙纤。

(3)賬號(hào)申請(qǐng)完成后耗溜,即可為自己的應(yīng)用申請(qǐng)相應(yīng)的廣告id了,選擇左側(cè)邊欄中的 “應(yīng)用” 選項(xiàng)省容,如下圖所示:

選擇后抖拴,在右側(cè)將會(huì)出現(xiàn)彈出窗體,點(diǎn)擊窗體左下角的 “ 添加應(yīng)用 ” 按鈕:

在彈出界面填寫應(yīng)用發(fā)布信息(已發(fā)布的應(yīng)用,可在此直接關(guān)聯(lián)Admob阿宅,未發(fā)布的應(yīng)用可在之后進(jìn)行關(guān)聯(lián)):

在此篇文章中候衍,制作一個(gè)測(cè)試案例,本人選擇未發(fā)布洒放,選擇完成后蛉鹿,跳轉(zhuǎn)至如下界面,填寫應(yīng)用信息往湿,并為應(yīng)用選擇相應(yīng)的發(fā)布平臺(tái)菲饼,在此以Android平臺(tái)為例,選擇Android埠巨,如下圖所示:

信息填寫完成后双妨,選擇添加,即可成功創(chuàng)建自己的應(yīng)用了蔓腐,如下圖所示:


在此圖中可獲取自己的應(yīng)用ID矩乐,在之后的廣告接入中需要配置,可提前記錄下來(lái)回论。接下來(lái)可謂自己的應(yīng)用創(chuàng)建廣告單元散罕,選擇左下角的創(chuàng)建廣告單元按鈕,即可進(jìn)入如下界面:

在此界面選擇相應(yīng)的廣告模式即可進(jìn)行創(chuàng)建傀蓉,以橫幅為例(其他兩種創(chuàng)建方式相同)欧漱,點(diǎn)擊選擇按鈕,將進(jìn)入如下界面葬燎,在該界面中填寫廣告單元名稱:

點(diǎn)擊高級(jí)設(shè)置误甚,可進(jìn)行廣告單元類型、刷新頻率谱净、有效每千次展示費(fèi)用低價(jià)設(shè)置:

設(shè)置完成后窑邦,點(diǎn)擊左下角的創(chuàng)建廣告單元按鈕,即可完成廣告創(chuàng)建壕探。


創(chuàng)建完成后冈钦,將會(huì)獲得橫幅廣告單元id,在此界面底部李请,可選擇 “完成”:終止廣告單元?jiǎng)?chuàng)建瞧筛,亦或選擇“再創(chuàng)建一個(gè)廣告單元”:繼續(xù)進(jìn)行廣告單元?jiǎng)?chuàng)建。

本次Test案例导盅,創(chuàng)建兩個(gè)廣告單元:橫幅與插頁(yè)较幌。


3、代碼邏輯白翻,針對(duì)于Admob官方SDK绅络,本人編寫如下邏輯代碼,進(jìn)行廣告接入:

AdmobLaunch.cs: 用于配置APPID,進(jìn)行廣告單元初始化

using System.Collections;

using System.Collections.Generic;

using UnityEngine;using GoogleMobileAds.Api;

public class AdmobLaunch : MonoBehaviour {

void Awake()

{ #if UNITY_ANDROID

string appId = "填寫自己的AppId"; #elif UNITY_IPHONE

string appId = "";

#else

string appId = "unexpected_platform";

#endif

MobileAds.Initialize(appId); DontDestroyOnLoad (this.gameObject);

} // Use this for initialization

void Start () { }

// Update is called once per frame

void Update () {

}

#region GUI Button

/*

void OnGUI()

{

if (GUI.Button(new Rect(0, 200, 200, 200), "Request _ Interstitial "))

{

GoogleMobileAdsDemoScript_Insert.Instance.RequestInterstitial();

}

if (GUI.Button(new Rect(300, 200, 200, 200), "Show Ad Interstitial"))

{

GoogleMobileAdsDemoScript_Insert.Instance.Show();

}

GUI.Box(new Rect(600, 200, 600, 200), "is ready Interstitial : " + GoogleMobileAdsDemoScript_Insert.Instance.IsReady());

if (GUI.Button(new Rect(0, 600, 200, 200), "Request _ Banner "))

{

GoogleMobileAdsDemoScript_Banner.Instance.RequestBanner();

}

if (GUI.Button(new Rect(300, 600, 200, 200), "Show Ad Banner"))

{

GoogleMobileAdsDemoScript_Banner.Instance.Show();

}

if (GUI.Button(new Rect(600, 600, 200, 200), "destory Ad Banner"))

{

GoogleMobileAdsDemoScript_Banner.Instance.Destory();

}

if (GUI.Button(new Rect(0, 1000, 200, 200), "Request _ RewardedVideo "))

{

GoogleMobileAdsDemoScript_Video.Instance.RequestRewardedVideo();

}

if (GUI.Button(new Rect(300, 1000, 200, 200), "Show Ad RewardedVideo"))

{

GoogleMobileAdsDemoScript_Video.Instance.Show();

}

GUI.Box(new Rect(600, 1000, 600, 200), "is ready RewardedVideo : " + GoogleMobileAdsDemoScript_Video.Instance.IsReady());

}

*/

#endregion

}

GoogleMobileAdsDemoScript_Banner.cs: 橫幅廣告接入邏輯恩急,可配置廣告單元不同狀態(tài)的回調(diào)事件杉畜。

using UnityEngine;

using System.Collections;

using GoogleMobileAds.Api;

using System;

public class GoogleMobileAdsDemoScript_Banner : MonoBehaviour {

? ? public BannerView bannerView;

? ? public static GoogleMobileAdsDemoScript_Banner Instance;

? ? void Awake()? ? {? ? ? ? Instance = this;? ? }? ? public void Start()? ? {

RequestBanner();

? ? }

? ? ? public void RequestBanner()? ? {

#if UNITY_ANDROID

string adUnitId = "填寫自己的BannerId"; #elif UNITY_IPHONE

string adUnitId = ""; #else

string adUnitId = "unexpected_platform";

#endif if (bannerView != null)

bannerView.Destroy (); bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);

// // Called when an ad request has successfully loaded.

// bannerView.OnAdLoaded += HandleOnAdLoaded;

// // Called when an ad request failed to load.

// bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;

// // Called when an ad is clicked.

// bannerView.OnAdOpening += HandleOnAdOpened;

// // Called when the user returned from the app after an ad click.

// bannerView.OnAdClosed += HandleOnAdClosed;

// // Called when the ad click caused the user to leave the application.

// //bannerView.OnAdLeavingApplication += HandleOnAdLeavingApplication;

AdRequest request = new AdRequest.Builder().Build();

? ? ? ? // Load the banner with the request.? ? ? ? bannerView.LoadAd(request);

? ? }? ? public void Show()? ? {

? ? ? ? bannerView.Show();? ? }

? ? public void Destory()? ? {

? ? ? ? bannerView.Destroy();

? ? }

? ? public void HandleOnAdLoaded(object sender, EventArgs args)? ? {

? ? ? ? MonoBehaviour.print("HandleAdLoaded event received");? ? }? ? public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)? ? {

? ? ? ? MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "

? ? ? ? ? ? ? ? ? ? ? ? ? ? + args.Message);

? ? }

? ? public void HandleOnAdOpened(object sender, EventArgs args)? ? {

? ? ? ? MonoBehaviour.print("HandleAdOpened event received");

? ? }

? ? public void HandleOnAdClosed(object sender, EventArgs args)? ? {

? ? ? ? MonoBehaviour.print("HandleAdClosed event received");

? ? }

? ? public void HandleOnAdLeftApplication(object sender, EventArgs args)

? ? {

? ? ? ? MonoBehaviour.print("HandleAdLeftApplication event received");

? ? }

}

GoogleMobileAdsDemoScript_Insert.cs: 插頁(yè)廣告接入邏輯,可配置廣告單元不同狀態(tài)的回調(diào)事件衷恭。

using UnityEngine;

using System.Collections;

using GoogleMobileAds.Api;

using System;

using UnityEngine.SceneManagement;

public class GoogleMobileAdsDemoScript_Insert : MonoBehaviour {

? ? private InterstitialAd interstitial;


? ? public static GoogleMobileAdsDemoScript_Insert Instance;

? ? void Awake()? ? {? ? ? ? Instance = this;

? ? }

? ? public void Start()? ? { RequestInterstitial();

? ? }


? ? public void RequestInterstitial()? ? {

#if UNITY_ANDROID

string adUnitId = "填寫自己的InterstitialId"; #elif UNITY_IPHONE

string adUnitId = ""; #else

string adUnitId = "unexpected_platform";

#endif

if (interstitial != null)

interstitial.Destroy (); // Initialize an InterstitialAd.

interstitial = new InterstitialAd(adUnitId);

// // Called when an ad request has successfully loaded.

// interstitial.OnAdLoaded += HandleOnAdLoaded;

// // Called when an ad request failed to load.

// interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;

// // Called when an ad is shown.

// interstitial.OnAdOpening += HandleOnAdOpened;

// // Called when the ad is closed.

interstitial.OnAdClosed += HandleOnAdClosed;

// // Called when the ad click caused the user to leave the application.

// //interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication;

// Create an empty ad request.

AdRequest request = new AdRequest.Builder().Build();? ? ? ? // Load the interstitial with the request.

? ? ? ? interstitial.LoadAd(request);

? ? }? ? public bool IsReady()

? ? {

? ? ? ? return interstitial.IsLoaded();

? ? }

? ? public void Show()

? ? {

//? ? ? ? if (IsReady())

//? ? ? ? {

? ? ? ? ? ? interstitial.Show();//? ? ? ? }

//? ? ? ? else {//? ? ? ? ? ? RequestInterstitial();

//? ? ? ? }

? ? }

? ? public void HandleOnAdLoaded(object sender, EventArgs args)

? ? {

? ? ? ? MonoBehaviour.print("HandleAdLoaded event received");

? ? }

? ? public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)

? ? {

? ? ? ? MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "

? ? ? ? ? ? ? ? ? ? ? ? ? ? + args.Message);

SceneManager.LoadScene( "LaunchScene" );

ZTBubble.GameUIForm.isclose = true;

? ? }? ? public void HandleOnAdOpened(object sender, EventArgs args)

? ? {

? ? ? ? MonoBehaviour.print("HandleAdOpened event received");

? ? }? ? public void HandleOnAdClosed(object sender, EventArgs args)? ? {

? ? ? ? MonoBehaviour.print("HandleAdClosed event received");

SceneManager.LoadScene( "LaunchScene" ); ZTBubble.GameUIForm.isclose = true;

? ? }

? ? public void HandleOnAdLeftApplication(object sender, EventArgs args)

? ? {

? ? ? ? MonoBehaviour.print("HandleAdLeftApplication event received");

? ? }

}

GoogleMobileAdsDemoScript_Video.cs: 激勵(lì)廣告接入邏輯此叠,可配置廣告單元不同狀態(tài)的回調(diào)事件。

using UnityEngine;using System.Collections;using GoogleMobileAds.Api;using System;public class GoogleMobileAdsDemoScript_Video : MonoBehaviour {

? ? private RewardBasedVideoAd rewardBasedVideo;

? ? // Create an empty ad request.

? ? AdRequest request = new AdRequest.Builder().Build();

? ? public static GoogleMobileAdsDemoScript_Video Instance;

? ? void Awake()

? ? {? ? ? ? Instance = this;

? ? }? ? public void Start()? ? {? ? ? ? Init();

? ? }

? ? void Init()

? ? {

? ? ? ? // 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.RequestRewardedVideo();? ? }? ? public void RequestRewardedVideo()

? ? {

#if UNITY_ANDROID

? ? ? ? string adUnitId = "填寫自己的RewardedVideoId"; #elif UNITY_IPHONE

? ? ? ? ? ? string adUnitId = ""; #else

? ? ? ? ? ? string adUnitId = "unexpected_platform"; #endif

? ? ? ? // Load the rewarded video ad with the request.? ? ? ? this.rewardBasedVideo.LoadAd(request, adUnitId);? ? }? ? public bool IsReady()

? ? {

? ? ? ? return rewardBasedVideo.IsLoaded();

? ? }

? ? public void Show()

? ? {? ? ? ? if (IsReady())

? ? ? ? {

? ? ? ? ? ? rewardBasedVideo.Show();

? ? ? ? }

? ? ? ? else {

? ? ? ? ? ? RequestRewardedVideo();

? ? ? ? }? ? }? ? 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");

? ? }

}

至此随珠,Admob廣告單元接入工作完成灭袁,創(chuàng)建一個(gè)空物體,將三個(gè)腳本進(jìn)行掛載窗看,運(yùn)行程序茸歧,即可獲得相應(yīng)廣告單元初始化輸出信息。

4显沈、發(fā)布應(yīng)用软瞎,進(jìn)行真機(jī)測(cè)試

在Unity編輯器下,我們無(wú)法進(jìn)行廣告單元測(cè)試拉讯,在此涤浇,可以將應(yīng)用進(jìn)行發(fā)布,安裝到相應(yīng)平臺(tái)的移動(dòng)設(shè)備或者模擬器進(jìn)行測(cè)試(建議使用真機(jī)測(cè)試)魔慷。本次程序運(yùn)行效果如下所示:


至此只锭,所有流程已結(jié)束。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末院尔,一起剝皮案震驚了整個(gè)濱河市蜻展,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邀摆,老刑警劉巖纵顾,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異隧熙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)幻林,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門贞盯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人沪饺,你說(shuō)我怎么就攤上這事躏敢。” “怎么了整葡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵件余,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)啼器,這世上最難降的妖魔是什么旬渠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮端壳,結(jié)果婚禮上告丢,老公的妹妹穿的比我還像新娘。我一直安慰自己损谦,他們只是感情好岖免,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著照捡,像睡著了一般颅湘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栗精,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天闯参,我揣著相機(jī)與錄音,去河邊找鬼术羔。 笑死赢赊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的级历。 我是一名探鬼主播释移,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寥殖!你這毒婦竟也來(lái)了玩讳?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嚼贡,失蹤者是張志新(化名)和其女友劉穎熏纯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體粤策,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡樟澜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叮盘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秩贰。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柔吼,靈堂內(nèi)的尸體忽然破棺而出毒费,到底是詐尸還是另有隱情,我是刑警寧澤愈魏,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布觅玻,位于F島的核電站想际,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏溪厘。R本人自食惡果不足惜胡本,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桩匪。 院中可真熱鬧打瘪,春花似錦、人聲如沸傻昙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妆档。三九已至僻爽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贾惦,已是汗流浹背胸梆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留须板,地道東北人碰镜。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像习瑰,于是被迫代替她去往敵國(guó)和親绪颖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 英文文檔甜奄,一開(kāi)始我也是抗拒的柠横,邊翻譯邊看,也就花費(fèi)了1個(gè)小時(shí)基本就閱讀過(guò)了课兄,我的英文基礎(chǔ)其實(shí)很差牍氛。附上鏈接:鏈接:...
    lonecolonel閱讀 9,926評(píng)論 3 1
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)烟阐,斷路器搬俊,智...
    卡卡羅2017閱讀 134,702評(píng)論 18 139
  • 本文首發(fā)于個(gè)人博客:Lam's Blog - 談?wù)?3種設(shè)計(jì)模式在Android源碼及項(xiàng)目中的應(yīng)用,文章由Mark...
    格子林ll閱讀 4,652評(píng)論 1 105
  • 接受不可以改變的蜒茄。 改變可以改變的唉擂。 以感恩之心感激擁有的一切。 以平常之心接受已發(fā)生的事扩淀。 z?j
    女王殿下1884閱讀 122評(píng)論 0 0
  • 北方的秋楔敌, 怎么可以那么冷啤挎, 冷的讓人心痛驻谆, 我走在校園里卵凑, 忍不住的抱住雙手, 那一絲絲的秋風(fēng)刮來(lái)胜臊, 鼻涕掉了下...
    心未暖閱讀 211評(píng)論 0 0