2011年2月28日月曜日

借金返済!!

・・・いや、個人的なことじゃないですよ!

バスケです。バスケ!まぁ、バスケじゃそんな言い回しはないと言われそうですが、プロ野球間隔で言うところの「借金返済」です!(^^;

昨日の会長杯での勝利により、GT.BLEDSの通算成績が、

77戦38勝38敗1引分

となりました!いやー10年やってると77試合もしてるんですねー。

とは言え、次勝たないと即借金生活へ・・・必勝!!・・・祈願(^^;

2011年2月26日土曜日

SyntaxHighlighterをBlogでつかう

クリボウの Blogger Tips: コードをハイライトする「Blogger Syntax ...

これ参考に導入してみた。やり方はそのまんまなんだけど、MacのChromeでやるとうまくいかなかったので、メモ・・・

普通は↓の画面が出るんだけど、


バージョンによるかもしれんけど、MacのChromeだと・・・

こんな感じでバグって、一応Add to Bloggerボタンは押せるけど、コレで登録しても全然ハイライトが有効にならなくてチョットハマった・・・

一応Chromeのバージョンは・・・

でも、Objective-Cは対応してないんだね・・・

2011年2月25日金曜日

iAdをメインにしてAdmobをバックアップとして設置

とりあえず、かなり前にiAdの勉強がてら、リリースしたShot Clock Timer Freeだけど、iAdってとりあえず日本ではまだ始まってないし、スタートしてるアメリカとかでも表示率が100%ではない。なので、AdmobもしくはAdmobとのハイブリッドが理想型らしいけど、当時はAdmobの設置方法はちんぷんかんぷんだったので、ほったらかしてた。

最近ちょっとづつ分かってきたので、いろんなとこ調べながら、やってみました。

http://yayacocoa.blogspot.com/2010/11/iadadmob.html
http://xcodenoobies.blogspot.com/2011/01/how-to-integrate-iad-for-os32-and-admob.html

ここら辺りを参考に始めたけど、お世話になってる寺子屋サルできにて、よくわかるソースを発見!

iAdはOS4だけで動作するのでビルド設定に注意

コレを参考に、微妙に修正して組み込んでみました!

とりあえず、Admobの登録して、SDKをダウンロードして、

  • AdMob
  • TouchJSON

を組み込み。AdMobフォルダは


  • AdMobDelegateProtocol.h
  • AdMobView.h
  • libAdMob.a

だけでもいいみたいだけどよくわかんないんで全部ぶち込みました。そして、以下のフレームワークを追加。


  • AudioToolbox
  • CoreGraphics
  • MediaPlayer
  • MessageUI
  • QuartzCore
  • iAd

iAdはOS3.xをターゲットにするならiAdをweklinkにする必要あり。

で、Admobのサイトでパブリッシャーidをコピッてきて、

//========================================================
// publisher id
//========================================================
- (NSString *)publisherIdForAd:(AdMobView *)adView {
 return @"publisher id";
}

ここの「publisher id」に置き換え。で行けるはず。

あと、

//========================================================
// Admobテスト用設定 リリース時にはコメントアウト?
//========================================================
//*/
- (NSArray *)testDevices {
 return [NSArray arrayWithObjects:
   ADMOB_SIMULATOR_ID,      // Simulator
   @"Device identifier",    // Xオーガナイザで確認
   nil];
}
///*

ここの「Device identifier」にXcodeオーガナイザで確認できるDevice identifierを入れると、実機でもテスト広告が出る。ただし、Admobのサイトのアプリ設定で、テストモードを無効化してると、意味はない。

後は、コンソールをみながら、

iAd: Did load ad

でiAdのテスト広告が表示されて、


iAd: Did fail to receive ad

でAdmobの広告がでればOK!・・・かと思われる。
うまくいけば暫く待てばfailしてくれるが、もしかしたらずっとloadしてるとAdmobの確認ができないかもしれない・・・

ちなみにオリジナルからいじった所は、viewDidLoadのAdmobの部分で、起動時には一旦、hiddenをYESにして、moveBannerViewOffScreenの部分でNOにしたところです。
iAdの読み込みには少し時間がかかるみたいで、起動時にiAdもAdmobも両方取得成功したときに、広告表示が、Admob->iAdとばたついて表示されるのを防ぐためです。
ただ、一時も広告の非表示時間を減らしたくない場合は得策でない場合がありますね。
また、Admobメインで考えるなら、逆にしたほうがいいでしょう。

「...」はアプリそれぞれのコードが入っていることを表しています。

↓以下サンプルソース

*.h

...
#import <iAd/iAd.h>
#import "AdMobDelegateProtocol.h"
...
@interface viewController :UiViewController < ... , ADBannerViewDelegate, AdMobDelegate>{
...
AdMobView *adMobAd;
ADBannerView *bannerView;
...
}
...
- (void) moveBannerViewOnScreen;
- (void) moveBannerViewOffScreen;
...
@end


*.m
#import "viewController.h"
#import "AdMobView.h"
@implementation:viewController
...
//========================================================
// 起動時設定
//========================================================
- (void)viewDidLoad {
 ...
 //iAd(OS4.0以上)
 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) {
  bannerView = [[ADBannerView alloc] init];
  bannerView.delegate = self;
  [self.view addSubview:bannerView];
  [self moveBannerViewOffScreen];
 }
 //Admob
 adMobAd = [AdMobView requestAdWithDelegate:self];
 [adMobAd retain];
 adMobAd.hidden = YES;
 ...
}
//========================================================
// メモリ解放
//========================================================
- (void)dealloc {
 ...
 //Admob
 [adMobAd release];
 //iAd
 bannerView.delegate = nil;
 [bannerView release];
 ...
}
...
...
...
...
#pragma mark iAd,Admob
//**********************************************************
// iAd⇔Admob切り替え
//**********************************************************
//========================================================
// iAd広告表示
//========================================================
- (void) moveBannerViewOnScreen {
 //Admob広告を隠す
 if (adMobAd != nil) {
  if (adMobAd.frame.origin.y == self.view.frame.size.height -48) {
   CGRect frame = self.view.frame;
   adMobAd.frame = CGRectMake(0, frame.size.height, frame.size.width, 48);
  }
 }
  //iAd広告を表示
 CGRect newBannerView = self.view.frame;
 newBannerView.origin.y = self.view.frame.size.height - bannerView.frame.size.height;
 [UIView beginAnimations:@"BannerViewIntro" context:NULL];
 bannerView.frame = newBannerView;
 [UIView commitAnimations];
}
//========================================================
// iAd広告非表示
//========================================================
- (void) moveBannerViewOffScreen {
 //iAd広告を隠す
 CGRect newBannerView = self.view.frame;
 newBannerView.origin.y = self.view.frame.size.height;
 bannerView.frame = newBannerView;
  //Admob広告を表示
  adMobAd.hidden = NO;
 if (adMobAd != nil) {
  if (adMobAd.frame.origin.y == self.view.frame.size.height) {
   CGRect frame = self.view.frame;
   [UIView beginAnimations:@"AdMobBanner" context:NULL];
   adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48);
   [UIView commitAnimations];
  }
 }
}
//**********************************************************
// iAd関連
//**********************************************************
//========================================================
// iAD広告取得成功時
//========================================================
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{
 NSLog(@"iAd: Did load ad");
 //Admob広告非表示->iAd広告表示
 [self moveBannerViewOnScreen];
}
//========================================================
// iAD広告取得失敗時
//========================================================
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
 NSLog(@"iAd: Did fail to receive ad");
 //iAd広告非表示->Admob広告表示
 [self moveBannerViewOffScreen] ;
}
//**********************************************************
// Admob関連
//**********************************************************
//========================================================
// publisher id
//========================================================
- (NSString *)publisherIdForAd:(AdMobView *)adView {
  return @"publisher id";
}
//========================================================
// current view controller
//========================================================
- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView {
 return self;
}
//========================================================
// Admob広告取得成功時
//========================================================
- (void)didReceiveAd:(AdMobView *)adView {
 NSLog(@"Admob: Did receive ad");
 CGRect frame = self.view.frame;
 adMobAd.frame = CGRectMake(0, frame.size.height, frame.size.width, 48);
 [self.view addSubview:adMobAd];
 [UIView beginAnimations:@"AdMobBannerstart" context:NULL];
 adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48);
 [UIView commitAnimations];
}
//========================================================
// Admob広告取得失敗時
//========================================================
- (void)didFailToReceiveAd:(AdMobView *)adView {
 NSLog(@"Admob: Did fail receive ad");
 [adMobAd removeFromSuperview];
 [adMobAd release];
 adMobAd = nil;
}
//========================================================
// Admobテスト用設定 リリース時にはコメントアウト?
//========================================================
//*/
- (NSArray *)testDevices {
 return [NSArray arrayWithObjects:
 ADMOB_SIMULATOR_ID,           // Simulator
 //@"Device identifier",       // Xオーガナイザで確認
 nil];
 }
///*
...
...
...
...
@end

iMacかMacBookか・・・

いや、別に買わないですよ。。。でも、前のMacデビュー機のMacBook(early 2008)からもうすぐ3年。ボチボチと考えちゃうわけですよ。前のは入門機的に勝ったんで、そろそろね・・・

でもって、今日発表されましたよね!これ



うーん。素敵・・・・

ただ、iMacの新しいのももうすぐって噂もあるし、そうなると、デスクトップか・・・ノートか・・・

スペック的にはもちろんiMacとなるんでしょう。画面の大きさを始め、その他も・・・(現時点ではMacBook Proの方がスペック上かも知れんけど、次のは併せてくるでしょ?クァッドコアとか)

で、圧倒的に持ち出す事なんて少ないし、MacBookが余ってくるんだから、いざとなったら引っ張り出せばいい。って事でiMacなのかな・・・ただ、MacBook Proかっこいい・・・

iMacとAirで20弱か・・・イヤイヤ。

2011年2月22日火曜日

B-Ball Score Book iPadでのバグ修正版はもうすぐ

B-Ball Score Bookにて、iPadで試合結果を送信した後にフリーズするバグの報告をメールで貰った。ありがたい・・・

日曜日に申請だしたので、今週中には公開されるはず!

当現象がでてる方、ご迷惑をおかけしますが、もう少し我慢を・・・

2/25 追記
修正版が公開されました!!

2011年2月21日月曜日

サルできさんにて公認もらいました!

【サルでき公認アプリ】GT.BLEDS3作品 リリース!

独自の切り口で、iPhoneアプリの開発を応援してくれているサイトにて、私の作ったアプリを紹介してもらいました!少し恥ずかしいですが・・・

サルにもできるiPhoneアプリの作り方

過去の戦績更新

すいません。気づけば1年も放置してしまってました!m(_ _)m

先ほど更新しておきました。男子は次勝つと過去トータルで勝率5割復帰ですね!ぜひとも!!

過去の戦績

しかし、HP自体もぼちぼち模様替えしたいな〜。なんか陰気くさい雰囲気だし・・・