iOS アプリ開発(iOS /AndroidでHTTP通信アプリ)

iOS アプリ開発

iOS アプリ開発のポイントは、3点です。

1.PHPアプリの起動方法
2.PHPアプリからのデータ受け取り
3.ATS設定(App Transfer Security対応)

当初swiftで作成していましたが、Swift3.0になり対処方法がわからないエラーが解決できないのでobjective-cで作成しています。

1.PHPアプリの起動方法

PHPアプリを起動する際に、iPhone画面上の値をパラメタとして

usernum=XXXX&name=XXXX&addr=XXXX“(XXXXは、画面の値)形式で呼び出します。

1NSString*post = [NSString stringWithFormat:@"usernum=%@&name=%@&addr=%@" ,user_num,username,addr];
2NSData*postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
3NSString *url = @"http://192.168.1.3/php_select.php"; //OK
4 
5NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]
6cachePolicy:NSURLRequestUseProtocolCachePolicy
7timeoutInterval:10.0];
8 
9[request setHTTPMethod:@"POST"];
10[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
11[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
12[request setValue:[NSString stringWithFormat:@"%d",(int)[post length]] forHTTPHeaderField:@"Content-Length"];
13[request setValue: @"application/x-www-form-urlencoded" forHTTPHeaderField: @"Content-Type"];
14 
15[request setHTTPBody: [post dataUsingEncoding: NSUTF8StringEncoding]];
16 
17// サーバにリクエスト
18NSURLSession *session = [NSURLSession sharedSession];
19 
20[[session dataTaskWithRequest: request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
21 
22// 結果判定
23if (response && ! error) {
24    NSString *responseString = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
25 
26    NSLog(@"成功: %@", responseString);
27 
28    XresponseString = responseString;
29 
30}
31else {
32    NSLog(@"失敗: %@", error);
33}
34 
35}] resume];
2.PHPアプリからのデータ受け取り

値を受け取る際にも工夫が必要で、今回は、インジケータ処理を使用して受け取り後にすぐに表示する方法にしています。

受け取り時に処理結果と値が送られてくるので、これらを処理して画面に表示させます。
PHPからの戻り値は、「name=#ZZZZZ#YYYYY 」(ZZZZZ:名前、YYYYY:住所)

1NSArray *arr = [XresponseString componentsSeparatedByString:@"#"]; //カンマで分割
2[arr objectAtIndex:0]; //1個目
3[arr objectAtIndex:1]; //2個目
4 
5if ([[arr objectAtIndex:0] isEqualToString:@"name="] == YES){
6 
7  if ([[arr objectAtIndex:1] isEqualToString:@""] == NO){
8 
9    self.text1.text = [arr objectAtIndex:1];//画面に値をセット
10    self.text2.text = [arr objectAtIndex:2];//画面に値をセット
11 
12  }
13 
14  else{
15 
16    self.user_namex.text = @"該当データなし";
17  }
18}
3.App Transfer Security対応

アプリでATS設定無効化にしないと、URLがHTTPSでないものは、受け付けてくれません。
info.plistを下記のように変更する必要があります。

NSApp Transport Security と AppTransport Security Setting の箇所を追加してください。

 

 

 

関連記事

    iOS/AndroidでHTTP通信アプリのまとめ

Verified by MonsterInsights