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 の箇所を追加してください。

関連記事
