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は、画面の値)形式で呼び出します。
NSString*post = [NSString stringWithFormat:@"usernum=%@&name=%@&addr=%@" ,user_num,username,addr]; NSData*postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; NSString *url = @"http://192.168.1.3/php_select.php"; //OK NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; [request setHTTPMethod:@"POST"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:[NSString stringWithFormat:@"%d",(int)[post length]] forHTTPHeaderField:@"Content-Length"]; [request setValue: @"application/x-www-form-urlencoded" forHTTPHeaderField: @"Content-Type"]; [request setHTTPBody: [post dataUsingEncoding: NSUTF8StringEncoding]]; // サーバにリクエスト NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithRequest: request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) { // 結果判定 if (response && ! error) { NSString *responseString = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; NSLog(@"成功: %@", responseString); XresponseString = responseString; } else { NSLog(@"失敗: %@", error); } }] resume];
2.PHPアプリからのデータ受け取り
値を受け取る際にも工夫が必要で、今回は、インジケータ処理を使用して受け取り後にすぐに表示する方法にしています。
受け取り時に処理結果と値が送られてくるので、これらを処理して画面に表示させます。
PHPからの戻り値は、「name=#ZZZZZ#YYYYY 」(ZZZZZ:名前、YYYYY:住所)
NSArray *arr = [XresponseString componentsSeparatedByString:@"#"]; //カンマで分割 [arr objectAtIndex:0]; //1個目 [arr objectAtIndex:1]; //2個目 if ([[arr objectAtIndex:0] isEqualToString:@"name="] == YES){ if ([[arr objectAtIndex:1] isEqualToString:@""] == NO){ self.text1.text = [arr objectAtIndex:1];//画面に値をセット self.text2.text = [arr objectAtIndex:2];//画面に値をセット } else{ self.user_namex.text = @"該当データなし"; } }
3.App Transfer Security対応
アプリでATS設定無効化にしないと、URLがHTTPSでないものは、受け付けてくれません。
info.plistを下記のように変更する必要があります。
NSApp Transport Security と AppTransport Security Setting の箇所を追加してください。
関連記事