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は、画面の値)形式で呼び出します。
1 | NSString *post = [ NSString stringWithFormat: @"usernum=%@&name=%@&addr=%@" ,user_num,username,addr]; |
2 | NSData *postData = [post dataUsingEncoding: NSASCIIStringEncoding allowLossyConversion: YES ]; |
5 | NSMutableURLRequest *request = [ NSMutableURLRequest requestWithURL:[ NSURL URLWithString:url] |
6 | cachePolicy: NSURLRequestUseProtocolCachePolicy |
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" ]; |
15 | [request setHTTPBody: [post dataUsingEncoding: NSUTF8StringEncoding ]]; |
18 | NSURLSession *session = [ NSURLSession sharedSession]; |
20 | [[session dataTaskWithRequest: request completionHandler: ^( NSData *data, NSURLResponse *response, NSError *error) { |
23 | if (response && ! error) { |
24 | NSString *responseString = [[ NSString alloc] initWithData: data encoding: NSUTF8StringEncoding ]; |
26 | NSLog ( @"成功: %@" , responseString); |
28 | XresponseString = responseString; |
32 | NSLog ( @"失敗: %@" , error); |
2.PHPアプリからのデータ受け取り
値を受け取る際にも工夫が必要で、今回は、インジケータ処理を使用して受け取り後にすぐに表示する方法にしています。
受け取り時に処理結果と値が送られてくるので、これらを処理して画面に表示させます。
PHPからの戻り値は、「name=#ZZZZZ#YYYYY 」(ZZZZZ:名前、YYYYY:住所)
1 | NSArray *arr = [XresponseString componentsSeparatedByString: @"#" ]; |
5 | if ([[arr objectAtIndex:0] isEqualToString: @"name=" ] == YES ){ |
7 | if ([[arr objectAtIndex:1] isEqualToString: @"" ] == NO ){ |
9 | self .text1.text = [arr objectAtIndex:1]; |
10 | self .text2.text = [arr objectAtIndex:2]; |
16 | self .user_namex.text = @"該当データなし" ; |
3.App Transfer Security対応
アプリでATS設定無効化にしないと、URLがHTTPSでないものは、受け付けてくれません。
info.plistを下記のように変更する必要があります。
NSApp Transport Security と AppTransport Security Setting の箇所を追加してください。

関連記事
iOS/AndroidでHTTP通信アプリのまとめ