2014年7月8日 星期二

Admob以及Vpon聯播筆記

目標

利用Admob Mediation聯播admob廣告以及vpon廣告

步驟

申請vpon帳號

依照步驟申請即可

加入應用程式

vpon在新增應用程式的時候會詢問App上架後的URL,這個在iTunes Connect裡面新增App之後就可以看到了。
App URL location

申請admob帳號

依照步驟申請即可

加入應用程式

用手動加入應用程式,照步驟完成後選編輯中介服務->新增廣告聯播網->新增事件,接著就會出現這個畫面。
新增vpon聯播
在Vpon的wiki裡有對這裡應該填什麼值做說明。
Label可以隨意,Parameter就是你在vpon新增的廣告id。
特別注意Class Name就是Admob Mediation SDK會去呼叫的class名稱,所以VPON admob mediation adapter的class name要跟這裡一樣,不然Admob Mediation SDK會找不到這個class。我遇到的情況是文件上面class名稱是VpadnAdmobCustomAd,但sample裡面是VponAdmobCustomAd。

整合SDK進project

使用cocoapods方式,編輯Podfile,加入兩個pod。

pod "Google-Mobile-Ads-SDK"
pod 'AdMobMediationAdapterVponSDK', :podspec => 'https://raw2.github.com/dearhui/AdMobMediationAdapterVponSDK/master/AdMobMediationAdapterVponSDK.podspec'

這樣就可以不用手動設定一堆麻煩的東西了。

使用SDK注意事項

其實聯播的運作方式就是使用同一個GADBannerView顯示不同廣告商發送的廣告內容。

admob

只要依照google developer的說明下去使用應該沒有什麼大問題,重點就是把GADBannerView顯示出來而已。
如果要讓admob顯示測試廣告,在GADRequest的testDevices加入GAD_SIMULATOR_ID。
記得GADBannerView的adUnitID要填入中介服務的id

- (void)setupAd
{
    // 在螢幕上方建立標準大小的視圖,
    // 可用的 AdSize 常值已在 GADAdSize.h 中解釋。
    self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];

    // 指定廣告單元編號。
    _bannerView.adUnitID = @"Your pub ID";

    // 通知執行階段,將使用者帶往廣告到達網頁後,該恢復哪一個 UIViewController,
    // 並將其加入檢視階層中。
    _bannerView.rootViewController = self;
}
- (void)loadAD 
{
    GADRequest *request = [GADRequest request];
    request.testDevices = @[
        GAD_SIMULATOR_ID
    ];
    // 啟動一般請求,隨著廣告一起載入。
    [_bannerView loadRequest:request];
}

vpon

vpon的廣告會在同一個GADBannerView顯示廣告內容,而且admob mediation SDK會自動呼叫vpon的class,只要admob中介服務有設定好,其他就不用操心。
目前加了AdMobMediationAdapterVponSDK這個pod之後會有 @synthesize of ‘weak’ property is only allowed in ARC or GC mode的問題,所以要在VponAdmobCustomAd.h加一行

@property(nonatomic, assign) id<GADCustomEventBannerDelegate> delegate;

應該就可以編譯成功了。記得pod update之後會自己加進去的東西會被清掉,需重加。

如果要讓vpon顯示測試廣告,需要加入設備的ID,如果沒加在log裡會提示你。
在VponAdmobCustomAd.m裡面

-(NSArray*)getTestIdentifiers
{
    return [NSArray arrayWithObjects:
            // add your test Id
            @"",
            nil];
}

目前vpon SDK的64 bit版本還在beta,所以如果不想編出64bit版本的binary,就要到Target->Build setting->Architecture裡面把arm64去掉。

2014年6月20日 星期五

Go HTML Parser

用Go寫爬蟲目前有兩個third party library還滿好用的。

  1. gokogiri: https://github.com/moovweb/gokogiri
  2. goquery: https://github.com/PuerkitoBio/goquery

gokogiri使用cgo封裝了libxml2,所以需要先安裝libxml2,環境架設比較麻煩,弄好之後可以用XPath的方式取element。而goquery基於Go的net/html以及cascadia,讓我們可以使用類似Jquery Selector的方式選取element。

Selector使用方式可以參考http://api.jquery.com/category/selectors/

搭配goquery的Readme變換一下selector應該就可以寫出一些基本的爬蟲了。

2014年6月6日 星期五

Mac OSX 安裝Go開發環境(Vim)

安裝Go

到https://code.google.com/p/go/wiki/Downloads?tm=2下載go1.2.2.darwin-amd64-osx10.8.pkg照步驟安裝。

設定GOPATH

vim ~/.bash_profile

加入

export GOPATH=/Users/vampirewalk/develop/go
export PATH=$GOPATH/bin:$PATH

使用Vundle管理Vim plugin

參照 https://github.com/gmarik/Vundle.vim

安裝vim-go

在.vimrc裏面加入

Plugin 'fatih/vim-go'

然後在vim裏面:PluginInstall

設定colorscheme

curl -o ~/.vim/colors https://raw.githubusercontent.com/fatih/molokai/master/colors/molokai.vim
vim ~/.vimrc

在vimrc中,在” Put your non-Plugin stuff after this line之後加入

syntax on        
colorscheme molokai
set t_Co=256

autocmd BufNewFile,BufReadPost *.go set filetype=go

安裝YouCompleteMe

https://github.com/Valloric/YouCompleteMe

調整MacVim的字型

vim ~/.gvimrc

寫入

set guifont=Monaco:h16

完成囉,開始開發吧

2014年5月7日 星期三

撰寫Cinnamon applet

什麼是Applet?

就是在panel上一格一格的東西,可以讓你快速執行某些設定或功能。
applet

如何製作一個簡單的Applet?

請參考How To Make A Cinnamon Applet (Force Quit Applet Tutorial。

API要到哪裡查?

http://www.roojs.com/seed/gir-1.2-gtk-3.0/gjs/

2014年2月7日 星期五

調整UIButton的Image大小

SetBackgroundImage

當給定一個固定大小的UIButton時,如果圖的大小跟UIButton不同,一種解法是

UIImage *image = [UIImage imageNamed:@"buttonImage"];
UIEdgeInsets edgeInsets = UIEdgeInsetsMake(30.0f, 25.0f, 29.0f, 9.0f);
UIImage *resizeableImage = [image resizableImageWithCapInsets:edgeInsets];
[backButton setBackgroundImage:resizeableImage forState:UIControlStateNormal];

SetImage

如果背景圖已經用掉了,也就是UIButton現在已經有背景圖,但是前景還想再放一個跟按鈕大小不同的圖,這時可以利用UIButton裡的UIImageView。Stackoverflow上有教一個方法是

[button setContentMode:UIViewContentModeScaleAspectFit];

但是這個只能放大圖不能縮小圖。

另一種方法是透過設定imageEdgeInsets可以縮小Image

[button setImage:[UIImage imageNamed:@"buttonImage"] forState:UIControlStateNormal];
button.imageEdgeInsets = UIEdgeInsetsMake(10,20,10,20);

效果大概像這樣
original
Modified
圖片來自http://stackoverflow.com/questions/1957317/how-do-i-scale-a-uibuttons-imageview, Hitesh Savaliya的答案