iPhoneアプリ開発。サーバー、データベース通信について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
shoshinsha

iPhoneアプリ開発。サーバー、データベース通信について

#1

投稿記事 by shoshinsha » 12年前

お世話になっております。

iPhoneアプリ開発において、タッチメソッドにおいて取得した座標情報や時間情報を配列に格納しアプリ外で保存するということをおこなっているのですが、方針としましては、

アプリ(タッチメソッド)で情報取得→GETかPOSTメソッドをサーバー側へ送信→サーバー側ではWebサーバーソフトのApacheを稼働させPHP言語にてデータベースへアクセス
するプログラムを記述→なおデータベースにはMySQLを使用→タッチメソッドっで取得した情報(配列やfloat型の値)をデータベースに保存。

という流れにしようかと思っているのですが何か不都合な点や間違っている点、足りない点などあるでしょうか?
通信プロトコルはHTTPを選択したのですが不都合はないのでしょうか?

また、サーバー側といっても今はMacbookにxamppをインストールしMacbook自体をサーバーとしている状態です。 後々は大学側のサーバーを借りるつもりです。

初心者なため意味がわからない部分があるかもしれないですがご返答お待ちしております。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: iPhoneアプリ開発。サーバー、データベース通信について

#2

投稿記事 by h2so5 » 12年前

そのMacBookに外部からの接続が可能かどうかが問題です。
ファイアーウォールやルーターによって外部からの接続が遮断されている場合があるので。
さらに、回線のIPアドレスが変動する場合はDynamic DNSなどを利用する必要があります。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: iPhoneアプリ開発。サーバー、データベース通信について

#3

投稿記事 by softya(ソフト屋) » 12年前

wifiローカルでの通信なら、それで出来ると思います。
ただ、ユーザー識別の方法が検討されていませんね。
あと通信時間の事も考えるとタッチメソッドで通信したらが画面が凍ることはないんだろうか?って気もします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shoshinsha

Re: iPhoneアプリ開発。サーバー、データベース通信について

#4

投稿記事 by shoshinsha » 12年前

ご返信遅れました。 お二方アドバイスありがとうございます。

現在わからないことがあるのですが、

コード:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // タッチした座標を取得。
    CGPoint currentPoint = [[touches anyObject] locationInView:self.cavas];
    
    date = [NSDate date];
   
    // ボタン上の場合は処理を終了
    if (CGRectContainsPoint(self.clear.frame, currentPoint)
        || CGRectContainsPoint(self.regi.frame,currentPoint)){
        return;
    }
    
    if(currentPoint.y < 0 || currentPoint.y > 140){
        return;
    }
    
    // パスを初期化。
    bezierPath = [UIBezierPath bezierPath];
    bezierPath.lineCapStyle = kCGLineCapRound;
    bezierPath.lineWidth = 1.0;
   [bezierPath moveToPoint:currentPoint];
    
    currentPoint = [[touches anyObject]locationInView:self.cavas];
    NSLog(@"touchesBegan:(%.0f, %.0f)", currentPoint.x, currentPoint.y);
}


- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    // タッチ開始時にパスを初期化していない場合は処理を終了。
    if (bezierPath == nil){
        return;
    }
    
    // タッチした座標を取得。
    CGPoint currentPoint = [[touches anyObject] locationInView:self.cavas];
    
    if(currentPoint.y < 0 || currentPoint.y >140){
        return;
    }
    
    // パスにポイントを追加。
    [bezierPath addLineToPoint:currentPoint];
    
    // 線を描画。
    [self drawLine:bezierPath];
    
    currentPoint = [[touches anyObject]locationInView:self.cavas];
    NSLog(@"touchesMoved:(%.0f,%.0f)", currentPoint.x,currentPoint.y);
}


- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    // タッチ開始時にパスを初期化していない場合は処理を終了。
    if (bezierPath == nil){
        return;
    }
    
    // タッチした座標を取得。
    CGPoint currentPoint = [[touches anyObject] locationInView:self.cavas];
    
    if(currentPoint.y < 0 || currentPoint.y > 140){
        return;
    }
    
    // パスにポイントを追加。
    [bezierPath addLineToPoint:currentPoint];
    
    // 線を描画。
    [self drawLine:bezierPath];
    
    // 今回描画した画像を保持。
    lastDrawImage = self.cavas.image;
    
    // パスを保持。
    [Stack addObject:bezierPath];
    bezierPath = nil;
    
    self.regi.enabled = YES;
    
    currentPoint = [[touches anyObject]locationInView:self.cavas];
    NSLog(@"touchesEnded:(%.0f,%.0f)", currentPoint.x,currentPoint.y);
    
    NSInteger size = [Stack count];
    
    [kakusuu1 addObject:[NSNumber numberWithInt:size]];
    NSLog(@"%@",kakusuu1);
    
    
    NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:date];
    
    [ontabtime addObject:[NSNumber numberWithFloat:interval]];
    NSLog(@"%@",ontabtime);
    
}

- (IBAction)regiP:(id)sender {
    
  ここで画数とタッチ開始からタッチ終わりまでの秒数をサーバーに送りたい。   

}
上記のプログラムでタッチ開始からタッチ終わりまでの秒数と総画数を取得できるのですが、最後のregiPで取得した画数(kakusuu1)、秒数(ontabtime)をサーバーからデータベースに保存したいのですが、、(kakusuu1とontabtimeはMutableArray型です)


ここでget かpost メソッドを使うと思うのですが、どのように記述すればいいのか調べたのですがよくわかりません。
どなたか教えてくれると助かります。。

ご返答お待ちしております。

shoshinsha

Re: iPhoneアプリ開発。サーバー、データベース通信について

#5

投稿記事 by shoshinsha » 12年前

補足で

>>ここでget かpost メソッドを使うと思うのですが、どのように記述すればいいのか調べたのですがよくわかりません。
どなたか教えてくれると助かります。。

これはregiPを押した際にサーバーからデータベースに保存したいということでした。。

サーバーへ通信するNSURLなどを書く場所や配列をサーバーに送る為の書き方がわからないのでアドバイスもらえるとうれしいです、、

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: iPhoneアプリ開発。サーバー、データベース通信について

#6

投稿記事 by softya(ソフト屋) » 12年前

iPhoneの仕様は分からないので、送信の仕方だけ。

文字列に変換してgetだとURLに記述します。
これは、PHPなどのWEBアプリの勉強していけばしていけば分かると思います。HTMLのフォームから送信するものを真似ればよいだけです。
配列もname[0]=1234などの形で文字列にして送信できます。

※ 先にWEBアプリの勉強をおすすめします。iPhoneのC系とデータの扱いが全然違うのでこちらを理解しないと最適な送信方法が見えてこないと思います。それに合わせてiPhone側の送信を作るのです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shoshinsha

Re: iPhoneアプリ開発。サーバー、データベース通信について

#7

投稿記事 by shoshinsha » 12年前

ご返信ありがとうございます。

Webアプリの勉強もしていきます。。。

もう一つ質問なのですが、セキュリティ上、apache(Xampp)にパスワードをかけた方がいいとなっていたのでパスワードをかけたのですが、apacheにxcodeのシュミレーターやiphone,他のパソコンからアクセスする際はWebサーバー(http://localhost macの場合の)にどのようにアクセスするようにプログラム記述するのでしょうか?

初歩的な質問で申し訳ありません。 ご返答お待ちしております

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: iPhoneアプリ開発。サーバー、データベース通信について

#8

投稿記事 by softya(ソフト屋) » 12年前

先にも書いた通り、普通にWEBアプリを書いて下さい。HTMLを返すんじゃなくて文字列を返せばよいだけです。

【補足】
この間から同じ質問で進んでいないんでとりあえずやってみて下さい。なにもやらないと分からないです。

あとパスワードが何のことか分からないのでコメント出来ません。BASIC認証のこと?でしょうか。
ユーザー認証やBASIC認証やSSL認証も研修室のサーバー管理者と相談してください。勝手なことは出来ないはずです。
ローカルで研究室で出来ないことを実験しても意味がありません。

※ こういうのって半年とか時間を取って実験しつつ組み込んでいくものですが時間がないんですよね?
研究室での相談があまりに出来ていないので無茶かもしれないと思い始めました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

shoshinsha

Re: iPhoneアプリ開発。サーバー、データベース通信について

#9

投稿記事 by shoshinsha » 12年前

 ご返信遅れました。

softyaさんご返答ありがとうございます。

無事にxode側もサーバー側もプログラムをかけているところです。 いろいろと初歩的な質問すいませんでした。

またお世話になるかと思いますのでよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る