Top Banner
ぼくたちの失敗 ~実際にあった失敗事例集~ 2011/01/23 murapong 1
28
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: iDW資料(110123)

ぼくたちの失敗~実際にあった失敗事例集~

2011/01/23murapong

1

Page 2: iDW資料(110123)

自己紹介

• 株式会社チャンスイットでiPhoneアプリ開発

• Blog:http://d.hatena.ne.jp/murapong/

• Twitter:http://twitter.com/murapong

2

Page 3: iDW資料(110123)

リリースしたアプリ①

• 「チャンスイッ島」

• チャンスイットのキャラクターを使ったTilt系ゲーム

• http://itunes.apple.com/jp/app/id384874687?mt=8

3

Page 4: iDW資料(110123)

リリースしたアプリ②

• 「えいとぱずる。」

• GetMoney!のキャラクターを使った8パズル(15パズルもあり)

• cocos2dを使用

• http://itunes.apple.com/jp/app/id396386382?mt=8

4

Page 6: iDW資料(110123)

今日のテーマ

• iPhoneアプリ開発に着手してからの約10ヶ月間が経過

• その中で経験した珠玉の失敗事例を紹介

6

Page 7: iDW資料(110123)

失敗①

7

Page 8: iDW資料(110123)

AdMobとは?• Google傘下のモバイル広告ネットワーク

• iPhoneだけでなくiPad、Android、スマートフォン用Webサイトなど多くのプラットフォームに対応

8

Page 9: iDW資料(110123)

AdMobを組み込むには?

• AdMobDelegateProtocol.h、AdMobView.h、libAdMob.aをプロジェクトに追加する

• AudioToolbox、CoreGraphics、MediaPlayer、MessageUI、QuartzCoreを追加する

• TouchJSONを追加する

• AdMobDelegateメソッドを追加する

9

Page 10: iDW資料(110123)

SampleViewController.h

#import <UIKit/UIKit.h>#import "AdMobDelegateProtocol.h"

@class AdMobView;

@interface SampleViewController : UIViewController <AdMobDelegate> { AdMobView *adMobAd;}

@end

10

Page 11: iDW資料(110123)

SampleViewController.m#import "SampleViewController.h"#import "AdMobView.h"

@implementation SampleViewController(中略)

#pragma mark -#pragma mark AdMobDelegate methods- (NSString *)publisherIdForAd:(AdMobView *)adView { return @"hoge";}

- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView { return self;}

- (void)didReceiveAd:(AdMobView *)adView { CGRect frame = self.view.frame; adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48); [self.view addSubview:adMobAd];}@end

11

Page 12: iDW資料(110123)

失敗:AdMobのアカウントロック

• 開発時にテストモードの設定を忘れる

• 結果、AdMobの原因調査のためリリース直後から約3週間のアカウントロック

12

Page 13: iDW資料(110123)

SampleViewController.m#import "SampleViewController.h"#import "AdMobView.h"

@implementation SampleViewController(中略)

#pragma mark -#pragma mark AdMobDelegate methods- (NSString *)publisherIdForAd:(AdMobView *)adView { return @"hoge";}

- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView { return self;}

- (NSArray *)testDevices { return [NSArray arrayWithObjects: ADMOB_SIMULATOR_ID, [UIDevice currentDevice].uniqueIdentifier, nil];}

- (void)didReceiveAd:(AdMobView *)adView { CGRect frame = self.view.frame; adMobAd.frame = CGRectMake(0, frame.size.height - 48, frame.size.width, 48); [self.view addSubview:adMobAd];}@end

13

Page 14: iDW資料(110123)

AdMobおまけノウハウ

• AdMobの広告が取得できない場合(ネットワーク未接続など)に空きスペースに自社広告を埋め込む

14

Page 15: iDW資料(110123)

- (void)didFailToReceiveAd:(AdMobView *)adView { CGRect frame = self.view.frame; rect = CGRectMake(0, frame.size.height - 48, frame.size.width, 48); UIImageView *myAd = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"my-ad.png"]]; myAd.frame = rect; [self.view addSubview:myAd]; [myAd release];}

15

Page 16: iDW資料(110123)

失敗②

16

Page 17: iDW資料(110123)

失敗:非公開APIの使用によるReject

• 「チャンスみくじ」ではカメラを使ってリアルタイム画像解析を行う必要があった

• UIGetScreenImage()なるAPIを発見

• ブログなどにも多数のサンプルコードが掲載

• ただし、このAPIは非公開API

• 結果、Waiting For Reviewから8分でReject(2010/12/1時点)

• もしかして機械的に弾いてる?

17

Page 18: iDW資料(110123)

UIGetScreenImage()のサンプルコードCGImageRef screenImageRef = UIGetScreenImage();UIImage *screenImage = [UIImage imageWithCGImage:screenImageRef];CGImageRelease(screenImageRef);

非常に簡単にスクリーンショットが取れる(ただしReject対象)

18

Page 19: iDW資料(110123)

iOS4.0のAV Foundationフレームワークを使用して解決

• ただし、前ページと同じ処理を書くのに100行近く掛かった

• http://developer.apple.com/library/ios/#qa/qa2010/qa1702.html

19

Page 20: iDW資料(110123)

失敗③

20

Page 21: iDW資料(110123)

使用可能デバイスによるインストール制限

• 「チャンスみくじ」ではカメラを使ってリアルタイム画像解析を実現

• 裏を返せばカメラが使用できない端末(ex.

iPad)ではアプリを使用できない

• 失敗:アプリ側で明示的に制限しないとReject

対象になる

21

Page 22: iDW資料(110123)

Info.plistのRequired device capabilitiesにアプリで必要なデバイスを記載する

22

Page 23: iDW資料(110123)

• 各デバイスの設定はAppleのサイトで確認

• http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BuildTimeConfiguration/BuildTimeConfiguration.html#//apple_ref/doc/uid/TP40007072-CH7-SW9

23

Page 24: iDW資料(110123)

失敗④

24

Page 25: iDW資料(110123)

iPhone実機でアプリを動かすには?

• iOS Developer Programへの登録

• キーチェーンアクセスで証明書要求を作成

• iOS Provisioning Portalに証明書要求を登録

• 証明書のダウンロード

• デバイスの登録

• App IDの作成

• Provisioning Profileのインストール

25

Page 26: iDW資料(110123)

失敗:証明書要求が登録できない

• Google Chromeだといくらやってもダメ

• Safari、Firefoxだとすんなり登録可能

• ブラウザの問題だと気付かずに数時間ハマる

• http://d.hatena.ne.jp/murapong/20101108/1289218790

26

Page 27: iDW資料(110123)

Appleの管理画面がGoogle Chromeと相性が悪い?

• iTunes ConnectのSales and Trendsのレポート表示もGoogle Chromeだとうまくいかない場合がある。(うまくいく場合もある。)

• これもSafari、Firefoxだと普通に開ける

27

Page 28: iDW資料(110123)

ご清聴ありがとうございました

28