カテゴリー: iPhone関連のプログラムなど

AdMobが新しくなってなんか変わった。

AdMobが何やら新しくなった。

前回ガラっと変わったのは確か2012年とかそのあたりで、AdSenseとシステムが統合されたためリニューアルと同時に単価が激しく上昇していた記憶がある。

今回のリニューアルでは単価の上昇とかはなくて、FireBaseを本格的に使ってもらうためのものだと思われる。

なお、いつ出来たのかは知らないが、広告のユニットID以外に下記のような感じに「アプリID」をAppDelegate内で指定する必要があるようす。

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  // Initialize Google Mobile Ads SDK
  // Sample AdMob app ID: ca-app-pub-3940256099942544~1458002511
  [GADMobileAds configureWithApplicationID:@"YOUR_ADMOB_APP_ID"];
  return YES;
}
@end

詳しくはAdMobのGet Startedを参照してください。

そういえば以前は本番の広告ユニットIDを指定するとテスト環境でも広告が表示されたが、今は表示されないみたいです。

なので、テスト環境ではAdMobが指定するテスト用広告IDを設定してね、ということらしい。インプレッション広告とかもあるから不正な収益が発生してしまうからでしょうね。

通常のiPad解像度(1536×2048)でつくったアプリをiPad Pro(2048×2732)で引き伸ばして表示する方法

iPadアプリを申請したらいきなりitunes connectでエラーが発生。

どうやらiPad Proの12.9インチ版スクリーンショットが必須になったらしい。ということはつまり、iPadアプリではiPad Proで動くことが必須になったということですね。

といってもiPad Proの解像度(2048×2732)なんて意識して作っていなかったので、どうしましょ、iPhoneアプリをiPadで起動すると自動で引き伸ばしてくれるように、なんとか引き伸ばして表示させる方法はないだろうかと調べたところ、ありました。

従来のソフトのままでiPad Proの画面に対応する方法
iPad Proが広すぎるため、取り急ぎ今までのアプリと同じサイズで対応しておきたい

Launch Screen Fileを設定しなければよい

Launch Screen Fileを設定する箇所を白紙にしておけばよいようです。大変助かりました。

引き伸ばしたスクリーンショットをitunes connectで設定して実際に申請したところ、問題なく「Ready for Sale」になりました。よかったよかった。

iPhoneでは5.5インチ、4.7インチ、4インチ、3.5インチと様々な解像度対応が必要で大変ですが、どの機種も一般のユーザーが使う解像度なので対応必須は当然だと思っています。しかし、個人的にはiPad Proは一般ユースとはちょっと違うんじゃないかな〜と感じていて、対応必須というのはちょっと厳しいような気がします。

Xcodeやitunes connectで、12.9インチ対応するかどうかをチェックボックスで選択できたりしたら分かりやすいんですけどね。

私もしばらくはこのLaunch Screen Fileを白紙にする方法で対応したいと思います。

“file xxx.png is missing from working copy” at project building というワーニングの対処

すでに削除した画像を読みにいってしまってるか、そのあたりのエラー。

下記のリンクを参考に、Xcodeの「Source Control」から「Commit」をクリックして、「!」マークのついてる対象のファイルを削除すればOK。

http://stackoverflow.com/questions/25338428/xcode-issue-file-xxx-png-is-missing-from-working-copy-at-project-building

Xcode8で”is missing from working copy” 消えました \(^^)/・・・・・が

NSDataReadingMappedIfSafe が deprecated になったので、その対処法

NSDataReadingMappedIfSafeがiOS8でdeprecatedになってしまった。

こちらがNSDataReadingMappedIfSafeを使ったもの

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"caf"];
NSData *buffer = [NSData dataWithContentsOfMappedFile:path];

これを下記に変更する。

NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"caf"];
NSData *buffer = [NSData dataWithContentsOfFile:path
                                            options:NSDataReadingMappedIfSafe
                                              error:nil];

オプションのところは「NSDataReadingMappedIfSafe」と「NSDataReadingUncached」と「NSDataReadingMappedAlways」から選ぶ。
どういう違いかはあまり調べてないが、ここに書いてある。

http://samplecodebank.blogspot.jp/2013/06/NSData-NSDataReadingMappedIfSafe-example.html

FireBaseを使ったAdMobの導入してみた(Cocoa pod使わない、かつObjective-C)

なにやら最近AdMobさんが「FireBase」なるものを使うことを推奨しているらしい。

それを使ってどうなるのかはさっぱりわからんが、何はともあれ入れてみました。

続きを読む