2014年2月28日金曜日

Iphone ビンゴアプリ開発 In Reveiw 入金口座について

おはようございます。
早く会社に着きすぎたので書こうと思います。

今朝やっとアプリのステータスがIn Reviewになってました。

















前回のアプリの時はかなり内容が濃かったにもかかわらず
10〜20分でReady For saleに変わったのですが、
今1時間くらいたっています。
もしかすると、
アップルの審査基準があがったのか?
Ipad版だから審査が長いのか?
新入社員がレビューしてるのか?

それとも・・・Rejectされるのか?
不安です。

そういえば昨日、銀行口座を見たらいままでの売り上げが、シティバンクに
入金されていませんでした。

なぜだとおもってgoogle先生に聞いたら、
登録した際の、名義が2012年以前はローマ字でも可能だったが、
いつからか「カタカナ」でないとだめになったらしい。
⬇のAccount Holder Nameです。




















急いで修正しました。

Payments and Financial Reports

を確認すると、
保留になっているお金gが2003円あるよ
次の振込日は3月6日だよ
って書いてありました。

しかし、最低入金金額というものがあるらしく、
(google先生でも金額については見つかりませんでした。)
2000円では振り込まれない疑惑があるのですが、
とりあえずまってみます。

また、アップルからの送金の手数料が無料になっているようなので、
それも期待しています。
(前までは3000〜4000円とられていたとか・・)



次回は、アプリが公開になったか、Rejectになったかお知らせできると思います。
公開だったら気合いいれて記事書きます。
又、次に作るべきアプリも模索中です。
考えとしては、

①1人でも2ヶ月くらいで作りきれる。
②ゲームは難しいので、計算とかデータベースを使って便利な物を作る。
③地図連携とか、ジャイロセンサーとか使ってみたい
④デザイン性を重視してみたい。

こちらも考えがまとまってきたら公開いたします。

それでは





2014年2月27日木曜日

Iphone ビンゴアプリ開発 テキストボックス表示の仕組み

こんばんわ、
今日もアプリのステータスがwaiting for reviewなので、
このアプリの細かいところに触れていきます。

このアプリの⬇に見える■はすべて「テキストボックス」です。















初期は半透明に設定し、ストップボタンを押すとalphaの値を1に設定し、表示する仕組みです。

ちなみに下記のようなコードを書いています。
//ストップボタン
- (IBAction)startbtn2:(id) sender {
   [timer invalidate];
    [player2 play];
    
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 1]]){k1.text = kaisu.text;
        k1.alpha = 1;
    }
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 2]]){k2.text = kaisu.text;
        k2.alpha = 1;
    }
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 3]]){k3.text = kaisu.text;
    k3.alpha = 1;
    }
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 4]]){k4.text = kaisu.text;
    k4.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 5]]){k5.text = kaisu.text;k5.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 6]]){k6.text = kaisu.text;k6.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 7]]){k7.text = kaisu.text;k7.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 8]]){k8.text = kaisu.text;k8.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 9]]){k9.text = kaisu.text;k9.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 10]]){k10.text = kaisu.text;k10.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 11]]){k11.text = kaisu.text;k11.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 12]]){k12.text = kaisu.text;k12.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 13]]){k13.text = kaisu.text;k13.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 14]]){k14.text = kaisu.text;k14.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 15]]){k15.text = kaisu.text;k15.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 16]]){k16.text = kaisu.text;k16.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 17]]){k17.text = kaisu.text;k17.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 18]]){k18.text = kaisu.text;k18.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 19]]){k19.text = kaisu.text;k19.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 20]]){k20.text = kaisu.text;k20.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 21]]){k21.text = kaisu.text;k21.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 22]]){k22.text = kaisu.text;k22.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 23]]){k23.text = kaisu.text;k23.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 24]]){k24.text = kaisu.text;k24.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 25]]){k25.text = kaisu.text;k25.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 26]]){k26.text = kaisu.text;k26.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 27]]){k27.text = kaisu.text;k27.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 28]]){k28.text = kaisu.text;k28.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 29]]){k29.text = kaisu.text;k29.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d",30]]){k30.text = kaisu.text;k30.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 31]]){k31.text = kaisu.text;k31.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 32]]){k32.text = kaisu.text;k32.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 33]]){k33.text = kaisu.text;k33.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 34]]){k34.text = kaisu.text;k34.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 35]]){k35.text = kaisu.text;k35.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 36]]){k36.text = kaisu.text;k36.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 37]]){k37.text = kaisu.text;k37.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 38]]){k38.text = kaisu.text;k38.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 39]]){k39.text = kaisu.text;k39.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 40]]){k40.text = kaisu.text;k40.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 41]]){k41.text = kaisu.text;k41.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 42]]){k42.text = kaisu.text;k42.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 43]]){k43.text = kaisu.text;k43.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 44]]){k44.text = kaisu.text;k44.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 45]]){k45.text = kaisu.text;k45.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 46]]){k46.text = kaisu.text;k46.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 47]]){k47.text = kaisu.text;k47.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 48]]){k48.text = kaisu.text;k48.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 49]]){k49.text = kaisu.text;k49.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 50]]){k50.text = kaisu.text;k50.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 51]]){k51.text = kaisu.text;k51.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 52]]){k52.text = kaisu.text;k52.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 53]]){k53.text = kaisu.text;k53.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 54]]){k54.text = kaisu.text;k54.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 55]]){k55.text = kaisu.text;k55.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 56]]){k56.text = kaisu.text;k56.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 57]]){k57.text = kaisu.text;k57.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 58]]){k58.text = kaisu.text;k58.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 59]]){k59.text = kaisu.text;k59.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 60]]){k60.text = kaisu.text;k60.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 61]]){k61.text = kaisu.text;k61.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 62]]){k62.text = kaisu.text;k62.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 63]]){k63.text = kaisu.text;k63.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 64]]){k64.text = kaisu.text;k64.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 65]]){k65.text = kaisu.text;k65.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 66]]){k66.text = kaisu.text;k66.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 67]]){k67.text = kaisu.text;k67.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 68]]){k68.text = kaisu.text;k68.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 69]]){k69.text = kaisu.text;k69.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 70]]){k70.text = kaisu.text;k70.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 71]]){k71.text = kaisu.text;k71.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 72]]){k72.text = kaisu.text;k72.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 73]]){k73.text = kaisu.text;k73.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 74]]){k74.text = kaisu.text;k74.alpha = 1;}
    if ([kaisu.text isEqualToString:[ NSString stringWithFormat: @"%d", 75]]){k75.text = kaisu.text;k75.alpha = 1;}
   

}

さすがにオブジェクトをこれだけ使うとMacbookAirの処理速度がすごく遅く感じました。
Proを買うべきだったと、少し公開しています。



2014年2月26日水曜日

Iphone ビンゴアプリ 開発 Waiting For Review 


こんにちは、今日は先日まで作成したビンゴアプリをアップルにアップロードし、
市場にだす準備をします。

まずはAirchiveという操作で、プログラムをビルドします。
.netでいうexeファイルのようなものでしょうか。


























そうすると下記のようにできあがります。
あとはValidateを押下して、エラーがなければアップルにアップロードできます。





正常にアップロードされると、
iturns connectのアプリのステータスが Waiting For Review に切り替わります。
(審査待ち状態)
 その後一週間で in Review になり、審査が始まるはずです。


あとは、下記のように売り文句とスクリーンショットを設定して待つのみです。
ちなみに、アプリのサポートサイトを記述しないと、審査がとおりませんのでご注意ください。







Iphone アプリ ビンゴアプリ開発 実機テスト

こんにちは、
前回までに作成したロジックでプログラムを動かしてみます。
下記のような動きになりました。

video



2014年2月25日火曜日

Iphone ビンゴアプリ 開発 乱数

こんばんは、
今日はビンゴアプリロジックの目玉、
ランダムな数字を表示する機能について記載していこうと思います。

指定した範囲の乱数を取得する関数を下記に作成しました。

//範囲のランダム数取得メソッド
-(int)getRandamInt:(int)min max:(int)max {
    static int initFlag;
    if (initFlag == 0) {
        srand((unsigned int)time(NULL));
        initFlag = 1;
    }
    return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));

}




呼び出し方は下記のように記載します。
ビンゴは1〜75の数字を表示します。



kazu =[self getRandamInt:1 max:75];





この呼び出しをタイマーで呼び出し、抽選しているように表現できます。



-(void)hogeTimer{
    //時間間隔をここで定義
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1
                                            target:self
                                          selector:@selector(MyAction1:)
                                          userInfo:nil
                                           repeats:YES];
}

- (IBAction)MyAction1:(id)sender {

        

    kazu =[self getRandamInt:1 max:75];

kaisu.text =[ NSString stringWithFormat: @"%d", kazu]
}



次回はどのように動作するか、動画をとってみたいと思います!

iphoneアプリ開発 音楽を扱う方法

こんにちは、昨日はソフトバンクの電波状態が悪いせいか、
ブログの更新ができませんでした。
基本的には夜に更新していきますので、よろしくお願いいたします。

さて、本日は音源を扱う方法を紹介します。

まず扱いたいMP3ファイルをサポートファイルにドラッグします。




















⬅この辺に入れました。


このMP3ファイルを認識させるために、
ViewDidloadにプレイヤーオブジェクトの設定をします。
今回はスタートボタンとストップボタンを押下したときの効果音を流したいので
2つずつ記述しています。


- (void)viewDidLoad
{
    [super viewDidLoad];
    count = 0;
// Do any additional setup after loading the view, typically from a nib.
    
    //スタートボタン用mp3ファイル名設定
    NSString *soundFilePath =
    [[NSBundle mainBundle] pathForResource: @"se_maoudamashii_onepoint09"
                                    ofType: @"mp3"];
    //ストップボタン用mp3ファイル名設定
    NSString *soundFilePath2 =
    [[NSBundle mainBundle] pathForResource: @"se_maoudamashii_onepoint04"
                                    ofType: @"mp3"];
   
    NSURL *fileURL =
    [[NSURL alloc] initFileURLWithPath: soundFilePath];
    NSURL *fileURL2 =
    [[NSURL alloc] initFileURLWithPath: soundFilePath2];
   
    //プレイヤー準備
    AVAudioPlayer *newPlayer =
    [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
                                           error: nil];
    AVAudioPlayer *newPlayer2 =
    [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL2
                                           error: nil];
    self.player = newPlayer;
    self.player2 = newPlayer2;
    
    [player prepareToPlay];

    [player2 prepareToPlay];

これで準備完了です。
あとはスタートボタンとストップボタンの処理です。

//ストップボタンの処理
- (IBAction)startbtn2:(id) sender {
   //音楽再生

    [player2 play];
}

//スタートボタンの処理
- (IBAction)startbtn:(id) sender {
    //音楽再生

    [player play];
}

これで音楽をながせるはずです。

次回はビンゴ抽選時のランダムに数字を表示させるロジックを紹介したいと思います。








2014年2月23日日曜日

アプリリリース手順 & ビンゴアプリデザイン

こんにちは、これからビンゴアプリを作っていこうと思いますが、
まずは有料のアプリをリリースについて紹介しようと思います。
下記の手順をふむことで初めてマックを扱う人でも
アップルストアに出すことができます。


①IMACを買う
➡インターネットで買う          約3日
 ➡IMACの操作に慣れる            約1日

②開発環境を整える
➡Xcodeをインストール         10分
➡APPLE IDを作成(持ってない人)      10分

③開発とリリース準備を整える(これらは平行でおこなう)

時間のかかる銀行口座開設を先に行う    約7日

アプリを開発する
➡DB作成、プログラミングを行う。    約14日

サポートサイトを開設する(ブログなど)  約1日

④ios developer programに登録する。    約7日
➡アプリができる一週間前ぐらいから申請を始める。
➡だいたい不手際があるので時間がかかる。
(翻訳サイトで英語を解読する)

⑤実機でテストを行う申請をする。   約2時間

⑥実機でテストを行う         約1日

⑦リリースする手続きを行う。     
➡各種個人情報入力         10分
➡口座入力             10分
➡税金情報入力           30分
➡アプリ説明を書く         30分
➡スクリーンショットを作る     2時間(サイズをあわせるのに手間う)

⑧リリースする
➡審査               7日



それでは本題、ビンゴアプリのデザインから紹介していきます。
右が起動した直後の画面、

画面を押下すると左の画面に遷移します。

スタート、ストップボタンのイメージは画像作成サイトで作りました。

画面下の白と青の四角いものは1~75の数字を表示する場所です。 


背景のimage viewのオブジェクトはAlphaを0.3に設定することにより、半透明にしています。
今日はここまで