Admob,FIrebaseに登録したあとの設定の仕方、アイフォンアプリ開発
単にライブラリやAPIをプロジェクトにドラッグする方法もあるらしいけど、pod installを使ったやり方
swift3.0 2017/09/14
続きを読む
Admob,FIrebaseに登録したあとの設定の仕方、アイフォンアプリ開発
単にライブラリやAPIをプロジェクトにドラッグする方法もあるらしいけど、pod installを使ったやり方
swift3.0 2017/09/14
続きを読む
Wedding Color Scheme Argument Leads to SC Stabbing
クリスマスの夜、カリフォルニア州南部で、結婚式に使う色について喧嘩し、婚約者を女性が刺したと発表しました。
水曜日の午後8時半頃、クリスタル・ジェームスは婚約者と結婚式についての相談で議論となり、彼が自宅に帰ろうとしたとき彼に襲いかかりました。
彼は、上半身に怪我を負いましたが、命に別状はありません。
ジェームズは、家庭内暴力等の罪により逮捕され、保釈金は1万ドルです。
続きを読む
(6)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ、Androidクロスプラットフォーム化へ 、マルチディスプレイ対応のためのディレクトリ配置と画像
前回(5)の記事はこちらタップしたときに画像の領域にあるか、画像をタップしたかの判定
<ファイル名の記載ルール>
cocos2d for iPhoneでは、レティナ対応のとき、画像のファイル名は-hdを付記してファイル名としました。これは、aaa.png,aaa-hd.pngというファイルを用意すると、aaa.pngで指定すれば、あとは勝手に判別してくれました。つまり、いちいち、aaa-hd.pngとして指定する必要はありません。
cocos2d-xでは、その方法が異なります。これはアンドロイドにも対応しなければならないため、-hd,-ipadhdとするだけでは対応しきれないと判断したとのこと。
またまた、移植に手間がかかります。
それぞれのスクリーンサイズ、プラットフォームに対応するフォルダーを個別に作成し、同じファイル名にするそうです。
iOS-folder、Retina4、Retina3.5、Android−A、Android-Bのように分類するみたいです。
iPad,iPadRetina,nomal
Android-folder,type1024,typeB,nomal
みたいにしてみます。
そして、パスを指定するコードを各自用意するようです。
参考サイト
cocos2d-x マルチディスプレイに対応させる | studycocos2dx
・画像の座標取得の場合の注意
ツール(複数の画像を一つの画像にまとめて座標のListにしてくれるソフト等のことをここでは指しています)を使って、画像の座標を自動で設定する場合はソフト側が自動で処理してくれるのでプラットフォームや解像度別に座標の比率を考慮する必要はありません。
しかし、ツールを使わずに、ペイントソフトで目算で座標を取得、メモしたりするときは注意が必要です。なぜツールを使わないのかというと、ツールの使い方を覚えるのが面倒であり、修正があるたびにツールを使って修正しなくてはならないので面倒であるからです。扱う画像やアニメーション画像が少ない場合は、ツールを使わずに、ペイントソフトで座標を取得した方がわかりやすくて早いのです。
cocos2d for iPhoneでは、レティナか非レティナで画像の座標を変更する必要があります。
例えば、レティナ対応の場合、100ピクセルの正方形画像があった場合、実際は50ピクセルとして表示されます。これはレティナの密度が倍の密度だからです。そのため、100ピクセルサイズの座標を取得する場合は、半分の100/2のサイズで取得するようにCGRectMakeを指定します。
作成した実サイズの大きさ(領域)で指定するのではなくて、実際に表示される大きさ(領域)で指定すると言うことです。
(1ピクセル1ドットとして説明していますので、ピクセルとドットの概念を取り違えているかもしれません。)
次に、cocos2d-xでは、100ピクセルの正方形画像があった場合、レティナであっても、そのままのサイズで指定します。つまり、cocos2d for iPhoneとは異なるCGRectMakeを指定することになります。
そのままの画像の座標を指定すればよいのです。
指定したサイズがスプライトして表示されます。レティナであれば、その半分のサイズ(倍の密度)で表示されます。
このように、フレームワークが異なるといろいろと設定が異なってきます。こういった設定をきちんと把握することが必要です。
現在学習中です。
[c]
[/c]
31![]() ディーゼル ナイロンベルトとスクリューバックでハードなミリタリーを感じさせるクロノグラフ在庫あり 店舗名:インポートセレクトSHOPでらでら |
32![]() ディーゼル DIESEL ディーゼル 腕時計 DZ7260 メンズ腕時計 多針アナログ表示 クロノグラフ ディーゼル DIESEL ディーゼル腕時計 MEN’S うでどけい【0405_腕時計】在庫あり 店舗名:CAMERON |
33![]() D&Gメンズ腕時計Twin Tip (ツインチップ)ホワイトシルバー文字盤【DW0755】DOLCE&GABBANA/ドルチェ&ガッバーナ/ドルガバ【ウォッチ】【あす楽対応】【レビューを書いて送料無料!】【新品、本物、当店在庫だから安心】在庫無し 店舗名:Ryu’s Selection |
34![]() 【送料無料】即納●MZIエムゼーアイ M.Johansson自動巻カレンダー温湿度計VicusLSB在庫あり 店舗名:Googoodsグーグッズ楽天市場店 |
35![]() クロノグラフ風ハイエンドモデル■遊びを忘れたオトナ達へ■木製腕時計No.1老舗テンス/TENSEウッドウォッチメンズ/ダーク&ブラウンサンダルウッド/白檀(ビャクダン)[正規輸入品/2年保障]【楽ギフ_包装】【楽ギフ_メッセ入力】【0405_腕時計】在庫あり 店舗名:ウッドウォッチコレクション |
36![]() D&G ディーアンドジー DW0379 PRIMETIME プライムタイム シルバー/ゴールド メンズウォッチ/腕時計【楽ギフ_包装】【激安】【通販】【価格見直し】在庫あり 店舗名:1&one |
App Storeへ7月10日午後1時20分頃申請完了しました。3つめのアイフォンアプリです。
過去のiPhoneアプリ
ひよこレスキュー
iTunesからダウンロード
フルーツ打ダウンロード
フルーツ打の操作説明
今回のApp Storeへの申請でのエラーは
(1)WEBのiTunesコネクトでDistribution証明書を作成し、ダウンロードした後、ダブルクリックして、XCODEを起動し、ビルド設定をコピーして、リリース状態にしたあと、
次に、Product->Archiveをしたいができない。これができればオーガナイザが起動します。
それが、Archiveがグレーになっていて選択できません。
なんのことはない、ios Deviceにしてできました。このとき実機が接続されている必要はありません。実機なしでも申請処理可能。
(2)次に、Bundle IDのところでした。
オーガナイザでValidateを押して進行中にエラーが表示されました。
com.enjoygoodtown.aaaa
とするときのaaaaだけを入力すれば良かったみたいですが。
com.enjoygoodtown.aaaa
をそのまま登録したら、
com.enjoygoodtown.com.enjoygoodtown.aaaa
と表示されて、オーガナイザのValidateチェックでエラーとなりました。
そこで、再度iTunesコネクトで入力を
aaaa
としました。
画面上に、com.enjoygoodtown.aaaaと表示されていたので、それをそのままみて確認すれば良かっただけでした。
約2週間ほどまってリリースを待ちます。
XCODEでは警告黄色が5つほど表示されましたが、使っていない変数だったので、無視して申請しました。
申請の時は、「コピペではじめるiPhoneゲームプログラミング、立花翔著、秀和システム」Chapter4ゲームをAppStoreにリリースする、P376あたり、を参考にしました。
予定では6月末に申請するつもりが、モチベーション低下で進みませんでした。
これで、年間4つ目標の2つ(トータル3つ)が達成できる予定です。
次のアプリ開発へ進みます。
31![]() ズープロジェクト オックスフロントシェイダー/ブラッキースモーク ステップワゴン(RK1/2/5/6)在庫あり 店舗名:オンラインカーショップ楽天店 |
32![]() ZOO PROJECTOXバイザー フロントシェイダーブラッキースモークホンダ ステップワゴン/ステップワゴンスパーダ年式:2009年10月~型式:RK1/RK2/RK5/RK6在庫あり 店舗名:レイブロスネットマーケット |
33![]() ★吸盤強化!!★ZVW40系 プリウスα [H23.5~]最新モデル!!銀反射サンシェード【全窓セット】オートキャンプ/アウトドア/車中泊/カーテンいらず【送料無料】【あす楽対応_近畿】【smtb-k】【w3】【RCP】【int01】 inex0080在庫あり 店舗名:イネックスショップ |
34![]() リラックマのカー用品Rilakkumaフロント用サンシェードRK882013年はリラックマ10周年♪可愛い記念デザインのサンシェードが登場☆【RCP】☆サマーグッズ★在庫あり 店舗名:ちいさなクルマ専門店ウイウイ練馬 |
35![]() ★吸盤強化!!★C25 セレナ [H17.5~H22.11]最新モデル!!銀反射サンシェード【全窓セット】オートキャンプ/アウトドア/車中泊/カーテンいらず【送料無料】【あす楽対応_近畿】【smtb-k】【w3】【RCP】【int01】 inex0171在庫あり 店舗名:イネックスショップ |
36![]() 6月下旬発送予定!レビューを書いて送料無料★20アルファード ヴェルファイア 前期/後期 遮光 サンシェード 10P 車内泊在庫あり 店舗名:azzurri car shop |
(4)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ、Androidクロスプラットフォーム化へ 、スケジュールupdate(float delta)、タップイベント
cocos2d-xの参考になるサイトです。
CCActionを利用する
・ポーズ
cocos2d for iPhone
[[CCDirector sharedDirector]pause];
↓
ココス2d−x
CCDirector::sharedDirector()->pause();
・メニュー
cocos2d for iPhone
CCMenuItemImage *item=[CCMenuItemImage itemWithNormalImage:@”seiseki.png” selectedImage:@”seiseki_down.png”
target:self selector:@selector(doSeiseki:)];
CCMenu *menu_miss=[CCMenu menuWithItems:item, nil];
menu_miss.position=ccp(windowsSize.width/2,40);
[self addChild:menu_miss];//
↓
ココス2d−x
CCMenuItemImage *item=new CCMenuItemImage();
item->initWithNormalImage(“seiseki.png”, “seiseki_down.png”, “seiseki.png”, this, menu_selector(HelloWorld::doSeiseki));
item->autorelease();
CCMenu *menu_miss=CCMenu::create(item,NULL);
menu_miss->setPosition(ccp(size.width/2,40) ) ;
this->addChild(menu_miss,20);
・CCLabelTTF の文字列設定 setString(const char*)
cocos2d for iPhone
CCLabelTTF *limiTime;
NSString *limitTimeString=[NSString stringWithFormat:@”%02d”,allCount-tcount];
limitTime=[CCLabelTTF labelWithString:limitTimeString
fontName:@”Helvetica”
fontSize:32 ];
limitTime.position =ccp(140,300);
limitTime.color =(ccc3(200, 0, 0));
[limitTime setString:limitTimeString];
↓
ココス2d−x
const char* string=CCString::createWithFormat(“%d”,allCount-tcount)->getCString();
CCLabelTTF *limiTime;
limiTime->initWithString(climitTimeString, “Helvetica”, 32);
limiTime->autorelease() ;
limiTime->setString(string);
・定期スケジュール(1/30、1/60)
cocos2d for iPhone
ヘッダーファイルには記載なしか必要に応じて記載する
init()内
[self scheduleUpdate];
-(void)update:(ccTime)dt{
//
}
↓
ココス2d−x
ヘッダーファイル
virtual void update(float delta);
C++ファイル
init()に記載
this->scheduleUpdate();
void HelloWorld::update(float delta){
//
}
・CCArrayにCCSpriteオブジェクトを追加して、CCSpriteにコピーするとき
cocos2d for iPhone
CCArray *array;(初期化、配列数、オブジェクトの追加は省略してます。)
CCSprite *sprite=[array objectAtIndex:i];
↓
ココス2d−x
CCArray *array;(初期化、配列数、オブジェクトの追加は省略してます。)
CCSprite *sprite=new CCSprite();
sprite=(CCSprite*)array->objectAtIndex(i);
sprite->autorelease();
・表示可否ビジブル
TRUEで表示、FALSEで見えない状態にします。
cocos2d for iPhone
sprite.visible=TRUE;
↓
ココス2d−x
sprite->setVisible(true);
・タップイベント シングルタップ
cocos2d for iPhone
宣言.h特に記入なし
シングルタップなので、init()内に記載なし。
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
return YES;
}
-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
CGPoint locationInView=[touch locationInView:[touch view]];
CGPoint location=[[CCDirector sharedDirector]convertToGL:locationInView];
//必要に応じてタップの処理を記入
}
↓
ココス2d−x
宣言.h バーチャル仮想関数で宣言します。
virtual bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch,CCEvent *pEvent);
init()内に
setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne);
関数
bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){
return true;
}
void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){
CCDirector *pDirector=CCDirector::sharedDirector();
CCPoint touchPoint=pDirector->convertToGL(pTouch->getLocationInView());
//必要に応じてタップの処理を記入
}
31![]() ドラゴンボールSCultures 造形天下一武道会3 其ノ一 全2種 人造人間18号・チチ在庫あり 店舗名:電脳萬屋弐号館 楽天市場店 |
32![]() ■予約■【フィギュア】モモ・ベリア・デビルーク (2013年11月発売)在庫無し 店舗名:Jam |
33![]() ROBOT魂<SIDE FFN> ファフナー・マークザイン在庫あり 店舗名:トイズボックス楽天市場店 |
34![]() トランスフォーマープライム AM-03 クリフジャンパー【キャラクターセール☆トランスフォーマー】在庫あり 店舗名:トイセルタウン |
35![]() 【再生産】超像可動 ジョジョの奇妙な冒険 第三部 空条承太郎・セカンド(荒木飛呂彦指定カラー) 【税込】 メディコス [ジョジョ3クウジョウジョウタロウ2nd]【返品種別B】【送料無料】在庫あり 店舗名:Joshin web 家電とPCの大型専門店 |
36![]() トランスフォーマープライムAM-11 アーシー【キャラクターセール☆トランスフォーマー】在庫あり 店舗名:トイセルタウン |
(1)cocos2d for iPhone をcocos2d-xに移植する過程の記録メモ、Androidクロスプラットフォーム化へ、まず第一歩
AndEngineによるアンドロイドゲームアプリ「ひよこレスキュー」を作成しました。こちらからダウンロードできます。
ダウンロードはこちらからです。無料です。広告収入のためにADMOBを入れています。(2014年1月11日追記)
スマートフォンの市場は、アイフォンとアンドロイドの2つの勢力でほぼ占めています。アイフォンで作ったアプリをAndroidへも展開することで、ごく単純に考えて2倍のダウンロード数が可能になる計算になります(実際は、そこまでいかないでしょうけど)。
アイフォンアプリは、MacOSX上で動作するXCODEでobjective-cを使用します。アンドロイド用アプリは、JAVAを使用します。つまり、objective-cとJAVAなわけですから、かたやオブジェクト指向のC言語(C++ではないのにオブジェクト指向)とオブジェクト指向の本流の言語として、開発環境が異なると言うことになります。ゲームシナリオやアルゴリズム、画像、音楽データ、データベースなどは同じものが使えるとして、コーディングについては、ほぼ別のものを作る必要があります。
コードを共通化したい
そこで、クロスプラットフォームとして、cocos2d-xを使うことにします。
cocos2d for iPhoneとcocos2d-xとは
「cocos2d for iPhone」 とはアイフォンアプリでゲームを作るためのフレームワークで、xcodeでobjective-cを使います。
「cocos2d-x」はアイフォンアプリでゲームを作るためのフレームワークで、xcodeでc++を使います
cocos2d-xのメリットは、Androidアプリを作るためのクロスプラットホームのための効率化です。アイフォン用として動作するアプリ(コード)がAndroidアプリと動作することができます。
つまり、アイフォンアプリを作ってAndroidへ移植する時の効率が非常に優れていることです。「cocos2d for iPhone」で作った場合、Androidへそのままコードをコピペしても動きません。ゼロからJAVA用に書き換える必要があります。こうかくと「cocos2d for iPhone」の利便性が低いように思えますが、「cocos2d for iPhone」はobjective-cでコードを記載するので、MacOSX,iOSアプリを作っている人が利用しやすく、objective-c固有のコードやライブラリを使用することができます。ただ、ゲームの世界でobjective-c固有のコードやライブラリを使用するのは多いことではありません。
クロスプラットフォームとして考えるとどうしても「cocos2d-x」が優位と考えられます。
ゲームメーカーも「cocos2d-x」を利用しているそうです。
cocos2d for iPhoneとcocos2d-xのどちらもcocos2dと冠しているのでコマンドの内容や指定手順はほとんど同じです。objective-cかc++というほんの少し文法が違う点を除けば、同じ感覚でプログラムを作っていくことができます。
まず、以前作成したひよこレスキューというアイフォンアプリcocos2d for iPhone をcocos2d-xに移植しAndroidアプリとして公開しようと思います。
画面
今回が初めての試みですので、途中で挫折するか、別のアプリを作成する方向に変わるかもしれません。そのときはごめんなさい。
クラスの作成
CCSpriteクラスを承継するcHiyokoクラスを作成
スプライトを設定し、クラス生成
C++の文法を忘れてます。ほんとに覚えることがあって大変です。
やっとobjective-cのコーディングになれてきたのに。
(正式な方法や正式名称を使わずに、説明しているところがあります。
ご注意ください。)
objective-Cでは、クラスを
voidをかっこで挟んで、マイナスをつけます。
AA.m
-(void)function{//メソッドのあとに、かっこがない
}
となります。
C++ではクラス名があって::をつけてメソッドを書きます。
AA.mm
クラス名::function(){//メソッドの後にかっこ必要
}
まず、C++なので当然ながらプロパティがなくて、マクロを利用します。
CC_SYNTHESIZE(cocos2d::CCSprite, _spriteHiyoko, spriteHiyoko);
こんな感じ。このとき、型の宣言とプロパティ、シンセサイズまでまとめて設定されます。
クラスメソッドは、
ID型がないので、boolかstaticにしてポインタにします。
ここらへんがややこしくなります。
+(CCScene *) scene
は、static cocos2d::CCScene* scene();みたいになります。
インスタンスメソッドは、マイナスのついたメソッドのことですが、boolになります。
<感想>
objective-cからC++への移植は思ったよりも難航しそうです。
まず、何を何から変えてよいのかわからない。
単純にそのまま、表示させる程度のものでも。
2014年1月11日追記
現在のところ、cocos2dXについての開発を中止しました。
アンドロイドアプリではダウンロードされそうにないみたいなので、無理して、クロスプラットフォームで開発する必要がなくなりました。
今後はアイフォン向けアプリとUnityの開発にしようと思います。
今日のアイフォンアプリ開発記録日誌、iPhoneシミュレータの判別方法メモ
開発に関する記事複数のiOS機器の登録
(1)iPhoneシミュレータの判別方法メモ
シミュレータでアイフォン、アイパッドのRetinaレティナかどうかの判定ができないか探していますが、見つかりません。シミュレータでは、非RetinaにしてもRetinaが返ってくるので、解像度に合わせた確認ができないでいます。理由は、CGRectMakeで座標座業を取得しているので、Retinaかどうかで、画像を切り替える必要があるからです。スプライト一つに一つの画像を用いれば、もっと楽ですが、頻繁にファイルを読み込むので、電力消費と、FPSの低下が心配なので、テクスチャを一つにしてます。なお、切り替えるテクスチャ数が少ないので、info.plistは使っていません。
参考サイト
iPhone iPad iPhoneシミュレータの判別方法
ProgrammerDidFinishWorking : iOSSDKで実機とシミュレータ実行の判別の仕方
シミュレータか実機か判別 / iPhoneOSか判別 – haneda部屋
アプリケーションを iPhone 4 の Retina Display に対応するための方法いろいろ – 24/7 twenty-four seven
(2)今日のアイフォンアプリ開発記録
1.アイパッドのデバイスを登録しました。これで、アイフォンとアイパッドで実機確認ができます。
2.アイパッドで実機確認をして、画像が正常に表示されていないバグ(コードのミスではない)がありました。
これは、ipadhd,ipad,hdという風に、ファイル名をつけますが、その通りになっていてもcocos2dの方で、正常に判別できていませんでした。そこで、アプリを実行する現在の機器がどの機種であるのかを表示サイズと比率で判別して画像を選別するようにしました。これは、画像単体をそのままスプライトにする場合は、問題ありません。
判別はちょっと面倒でした。シミュレータ上では、レティナタイプと非Retinaタイプの判別はわかりませんでした。
この問題が発生するのは、CGRectMakeを使用して1枚のテクスチャから部分領域を切り取ってスプライト設定する場合に発生する問題です。
その理由は、Retina対応によるものです。Retinaは2倍の密度を持つために、画像のピクセルが100ピクセルあるとすると、実際の表示は、50ピクセルになります。1対1の場合は、100ピクセルのサイズとなりますが、Retinaになると1:2になり、凝縮された画像のようになって半分の50ピクセルで表示されます。そのため、CGRectMakdeで領域を指定するときは、実際の半分の座標で領域を指定する必要があるのです。例えば、左上側から50ピクセルの高さと幅の画像領域を指定したいとすると、(0,0,50/2,50/2)または、(0,0,25,25)のように指定します。実際の大きさの半分のサイズで指定することで、Retina対応の機器は画面上で、25ピクセルの画像として表示します。
そのため、Retinaの場合の領域指定と非Retinaの場合の領域指定は異なります。今回は、アイフォンRetinaとiPad非Retina,iPadRetinaの画像を用意しました。
アイフォンのRetinaとアイパッド非Retinaはほぼ同じサイズとして使用しましたので、実質は2種類の画像を用意して、ファイル名を変更することにより、効率化しました。ただし、全体の画像容量は、単純にアイフォン1種類に比べて、3倍以上になります。
しかし、できるだけ高解像度の画像を用意することで、実機で確認したときに、きれいな画像が表示されるのを確認するとやはり高解像度を使用した方が良いと実感しました。ドット絵を使用する賢いやり方もありますが、その場合は、キャラクターがカクカクしすぎてせっかくの高解像度が台無しになったような気がするからです。
info.plistを使用していれば、たぶん問題とならないでしょう。ではなぜ、info.plistを使用しないのかというと、info.plistを使用するほど、スプライト数が多くないからです。また、画像の変更も多くて、いちいちinfo.plistを変更するのが、面倒だからです。また、扱うソフトを覚えるのも面倒というのも理由です。
<検討中>
3.ccTouchMovedで、スワイプしてもキャラが動かないシーンがありました。
1面ではEndのみ正常、ボス面は正常にスワイプできました。
1面とボス面は同じコードをコピペしていて、Diffでも同じでした。
原因は不明です。
とりあえず、同じコードといいながら違うコードを記載していることもあるので、動いてる方を動いていない方のコードに入れ替えてみます。
これで、動かないときは、どうしましょうか。
>いまここ
4.一時停止中にホームボタンを押して、アプリを切り替えるとアプリが勝手にアニメーションを開始していました。本来は、復帰後も一時停止となるはずです。
AppDelegate.mのapplicationDidBecomeActiveにシングルトンを設定しました。
アイフォン・アイパッドデバイス端末のiOS Dev Centerへの追加登録手順メモ
アイパッドをiOS Dev Centerに追加登録してアイフォン実機デバッグでアプリを確認します
アイフォンかアイパッドの証明書を作成する Provisioning Profiles
デバッグ確認が必要になりました。
アイパッドのシミュレータ(シュミレータって書きそうになりますが)では、リフレッシュレートが30以下になって動作確認が正常にできません。実機だと60FPSきちんと表示されるので、シミュレータの限界になるのでしょうね。
一つのAppIDで2つのデバイスを登録したprovisioning profileを作成しました。
アイパッドを新規にデバイスとして登録しました。
以下はその追加手順です。
なお、書籍の情報をたどりながら作業をしましたので、古い情報で作業をしたり、iOS Dev Centerのページが変わっていたりします。
前提条件として
アイフォン1機はすでに、登録されており、複数のアプリの登録をすでに実施した後のアイパッド実機の追加登録になります。
複数のAppIDが存在します。
参考サイト
App Storeへのアプリの登録手順 | 田村倉庫
複数のMacで開発記事アイフォンアプリiPhoneを作るときに複数台のMacで開発するときに証明書の認証をどうすれば良いのか?
作業日は、2013年6月8日です。
以下は作業したとおりに、画面キャプチャしながら、登録を進めました。そのため、正しい手順になっていないことがあります。
<AppIDの追加>その後、2台目の実機(アイパッド)登録になります。1台目はアイフォンで登録済みです。
1.iOS Dev Centerにログイン(すでにデベロッパー会員になっていることが条件です。)
https://developer.apple.com/devcenter/ios/index.action
2.画面右上の方の[Certificates, Identifiers & Profiles]をクリック
>>>>間違って別のところに進みました。AppIDの追加の場合は、下の3Aから進めてください。
(誤り)3.iOS Appsのグループの中のProvisioning Profilesをクリック
新しいプロファイルを追加
(誤り)4.画面の右側の十時アイコン(Add)をクリック
画像00
(誤り)5.Development の iOS App Developmentのラジオチェックを選択
01jpg
(誤り)6.Add iOS Provisioning Profileページで、Select App ID. となります。
でも、失敗。ページが違います。
02。jpg
AppIDを追加したいのですが。
>>>>
03。jpg
3A.Registering an App IDのページです。
04。jpg
05。jpg
06。jpg
Wildcard App IDで自分のドメインを登録
4A.先に進んで、完了。これで、新しくAppIDを登録できました。
5A.次に、先ほどの誤りの3に戻って、Provisioning Profilesをクリック
6A.画面の右側の十時アイコン(Add)をクリック
(誤り)5.Development の iOS App Developmentのラジオチェックを選択
(誤り)6.Add iOS Provisioning Profileページで、Select App ID. となります。
先ほど、作成したAppIDを選択
07。jpg
7.自分の登録を確認
08。jpg
8.端末を選択
今はアイフォン一台です。とりあえず、このまま進みますが、
アイパッドを新規に登録したかったのですが。
ここで、十時アイコン(Add)をクリックします。
が一緒でした。
What type of provisioning profile do you need?の画面になりました。
09。jpg
>>結局同じ画面を繰り返しでした。
とりあえず、まず、アイフォンの実機を登録します。
9.Name this profile and generate.
Profile Name:を登録します。ここは開発者がわかる名称で良いそうです。
iPadDonguri_profile
としました。
10。jpg
10。Your provisioning profile is ready.
ダウンロードできました。
11。jpg
<実機追加>
画面を見て気づきました。左側にDevicesとありました。
12。jpg
ここをクリックします。
1 iOS Devices
13。jpg
登録された実機デバイスが表示されています。
今回iPadを登録したいので、十字キーを押します。
2.Registering a New Device or Multiple Devices
ようやくアイパッドを登録して、実機でアプリの確認ができそうです。
UDIDは、iTunesの概要タブのシリアル番号をクリックすると表示されます。
14.jpg
このまま登録を進めます。
15。jpg
完了
そして、また、
IdentifiersのAppIDsで、先ほど作成したAppIDで二つの端末で使用すれば良いのでしょうか(登録で着るみたいです。)
16。jpg
違いました。
ここではなにもできません。
Provisioning Profielsで、アイパッドの実機を登録できるでしょうか?
17。jpg
先ほど登録したiPadDonguri_profileをクリックします。
Device 1totalと記載されていて、Editボタンがありました。もしかしてできるかもしれません。
Editボタンをクリックします。
18.jpg
Deviceが表示されました。
これまでの実機追加のところで追加アイパッドが表示されています。選択します。
19。jpg
Your provisioning profile is ready.ページで
ダウンロードします。
20。jpg
(ここは不要みたいでした。)
>>>>>>>
<キーチェーンアクセスの設定>
キーチェーンアクセスを開き、
メニューのキーチェーンアクセス、証明書アシスタント、認証局に証明書を要求を選択します。
21。jpg
そのまま、進め、ファイルを保存します。私は、書類に入れました。
>>>>>>>
<iPadDonguri_profile(1).mobileprovision、iOS devで作成したファイルをオーガナイザに登録>
先ほど、iOS devで作成したファイル、ここでは書類に保存したものを、オーガナイザに登録します。
ここでは、XCODEのアイコンにドラッグします。するとオーガナイザ起動します。
このとき、新しい端末のアイパッドをMacに接続しておきます。
そして、アイパッドの項目を選択し、UseDeviceをクリックします。
22。jpg
そして、アプリを実機で確認するために、端末を設定して実行を押しました。
エラーが表示:
Code Sign error: A valid provisioning profile matching the application’s Identifier ‘com.yourcompany.e-Don’ could not be found
‘com.yourcompany.e-Don’を
‘com.enjoygoodtown.e-Don’
にしました。
再度実行して、無事新しく登録したアイパッドで実機確認ができました。
アイフォンアプリ開発、今日のエラー、AdMob、表示、非表示でエラーになります。
シーンが切り替わるたびにAdMobウィンドウを消して、再表示をしたいと思いました。
onExitにAdMobの削除関連のコードを記載したのですが、シーンが切り替わるとしばらくしてクラッシュします。
シーンを切り替えるときに、直前の場所に削除関連のコードを記載してOK、クラッシュ無し。
それとも、一度Admobを表示させたら、シーン毎に削除させる必要が無くて、そのままでもよかったのかな。
つまり、一度Viewを追加したら、そのままにしておけばよいということだろうか。
よくよく考えれば、AdMobが原因と言うよりは、addSubviewを連続して追加していることに問題がありそうです。
アイフォンアプリ開発、iPhone,objective-C、今日のエラー、adMobの再表示でクラッシュ
adMobの再表示でクラッシュしてしまいます。広告を表示させるシーンとさせないシーンが混在していて、シーン遷移でクラッシュしている感じです。エラー表示もGAD関連付近で停止。どうやら、広告のビューが原因のようです。
シーン間の遷移では、広告関連の変数を削除、初期化しましたが、まだクラッシュします。まだViewが残っていたためのようです。
そこで、Viewを削除して、クラッシュしなくなりました。
1 2 |
gadbanner_.delegate=nil; [gadbanner_ release]; |
としても、ビューは消えません
1 2 3 |
GADBannerView *gadbanner_; gadbanner_ = [[GADBannerView alloc] initWithFrame:rect]; (略) |
removeしてビューは消えます。
1 |
[gadbanner_ removeFromSuperview]; |