Xcode

App Transport Security has blocked a cleartext HTTP (http://) Solved

App Transport Security has blocked

สวัสดีครับ วันนี้ผมจะมาแนะนำวิธีแก้ปัญหาที่บอกเลยว่า “ต้องเจอทุกคน!” ในการเขียน app iOS ยุคนี้

ขอเล่าที่มาของปัญหานี้สักเล็กน้อยนะครับ ตั้งแต่มี iOS 9 เกิดขึ้นมา Xcode ก็ปรับตัวตามโดยออกมาเป็น Xcode 7 โดยมีการอัพเกรดที่สำคัญหลายๆอย่างด้วยกัน แต่จุดนี้ที่จะให้ดูคือการให้ความสำคัญในเรื่องของความปลอดภัยในการเรียกใช้ข้อมูลจาก network หรือเรียกง่ายๆคือการเรียกใช้งาน API นั่นเองครับ

หลายๆคนคงเคยใช้งาน AFNetwork, Alamofile หรือหากใครโหดๆหน่อยใช้งาน API โดยไม่ผ่าน framework ดังกล่าว ก็จะต้องใช้งาน NSURLRequest แน่นอน ปัญหาที่พบเลยนั่นคือ… “ทำไมข้อมูลมันไม่มานะ url ก็ถูกต้องแล้วนี่นา?” หากได้สังเกตที่ Consol ด้านล่างแล้วจะพบข้อความ error ปรากฎดังนี้

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file.
Error Domain=NSCocoaErrorDomain Code=3840 “No value.” UserInfo={NSDebugDescription=No value.}

แปลเป็นภาษาง่ายๆเลยก็คือ ต่อไปนี้ห้ามเรียกใช้ http:// แล้วนะ มันไม่ปลอดภัย ต้องใช้งานด้วย https:// เท่านั้น

แน่นอนว่าบางคนก็ไม่พร้อมที่จะมี server ที่รองรับ https ในการใช้งาน แบบนี้จะทำอย่างไร ก็แก้ได้ง่ายๆด้วย 2 วิธีครับ
1. บอก Xcode ไปเลย “ไม่เป็นไรนะ ไม่ต้องห่วงฉัน ฉันยังอยากจะใช้งาน http แบบเดิม ขอบคุณครัช”
วิธีนี้ต้องไปเพิ่มค่าที่ info.plist โดยใส่ค่านี้ลงไป

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

2. บอก Xcode ว่า “ขอให้ฉันใช้ http เถอะนะ ขอแค่เป็นบาง url ก็พอแล้ว(ครัช)”
ทำตามนี้เลยครับที่ info.plist เช่นเดิม

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<!– url ที่ต้องการขอยกเว้น–>
<key>yourserver.com</key>
<dict>
<!–Include to allow subdomains–>
<key>NSIncludesSubdomains</key>
<true/>
<!–Include to allow HTTP requests–>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!–Include to specify minimum TLS version–>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>

ลองทำตามดูนะครับ สบายหายห่วง แก้ไขปัญหาได้แน่นอน

Credit: http://stackoverflow.com/questions/31254725/transport-security-has-blocked-a-cleartext-http

Set UITableView Background Color in iOS 7

Set UITableView Background Color in iOS 7

สวัสดีครับ วันนี้มาแบบสั้นๆเกี่ยวกับการใส่ background color ให้กับ UITableView ครับ โดยปกติแล้ว (ก่อน iOS 7) เราก็จะทำกันง่ายๆที่ viewDidLoad หรือแล้วแต่ว่าใครจะไปวางที่ไหนครับ More

Changing UIStatusBarStyle in iOS 7

UIStatusBarStyle

Status Bar ใน iPhone หรือ iPad คือแถบด้านบนสุดที่มีความสูงเพียง 20 pixels เท่านั้น แต่สามารถแสดงเวลา แบตเตอรี่ และสถานะต่างๆของมือถือได้ ใน iOS 7 เราสามารถแก้ไขได้เพียง 2 แบบเท่านั้น เพราะรูปแบบอื่นๆนั้น  iOS 7 ไม่อนุญาตอีกแล้วครับ More

AFNetworking 2.0 : Request API with Content-Type = text/html

afnetworking-logo

AFNetworking เป็น framework สำหรับ iOS ที่ดีมากๆตัวหนึ่ง เอาไว้ใช้สำหรับการติดต่อกับ API ทั้งหมด หรือการจัดการเกี่ยวกับการใช้ network หรือ internet มีการเก็บ cache ให้เราด้วย ทำให้ไม่ต้องทำอะไรยุ่งยากมากนักในการใช้งาน More

iOS Ad Hoc Deployment with Xcode

Application on Desktop

สวัสดีครับ วันนี้มีบทความมาแบ่งปันครับ เคยไหมที่อยากจะทดสอบ app ที่จะขึ้นไปยัง App Store ก่อนที่จะอัพ ถ้าเกิดทดสอบด้วยวิธีปกติ นั่นจะเป็นการการทดสอบด้วย dev environment ครับ ซึ่งมีบางกรณีที่ dev กับ production มีความแตกต่างกัน เช่นกันทดสอบ Push Notification วิธีที่จะทดสอบ App ตามที่กล่าวมานั้นเรียกว่า Ad Hoc ครับ More

Custom NSCharacterSet with UniChar

Xcode Logo
สวัสดีครับ วันนี้ผมมีเทคนิคง่ายๆมาฝากในการเอา char ที่ไม่ต้องการใน NSString ออกครับ เช่นสมมติว่าเรามีคำว่า <abcd efgh ijkl> หากเราต้องการ output ออกมาให้เป็น abcdefghijkl จะทำยังไงดีครับ บางคนอาจจะบอกว่า ก็ replace สิ  More

How to Add New Version of iOS Application to App Store

 

สวัสดีครับ หลายๆคนอาจจะได้ submit application ของตัวเองขึ้น App Store กันไปบ้างแล้ว แต่อาจจะยังไม่ทราบวิธีการ add version เพื่อ update app ของเรา วิธีการนั้นแสนง่ายครับ ง่ายกว่าการ submit app ใหม่เยอะเลยครับ เพราะเราไม่ต้องกังวลเรื่อง app icon, screenshots หรือพวกรายละเอียดปลีกย่อยต่างๆ ง่ายยังไงหรอครับ ลองมาชมวิธีการ add version ตามนี้เลยครับ

More

Application Icon Missing in Organizer – Archives


สวัสดีครับทุกท่าน วันนี้ผมมานำเสนอการแก้ปัญหาบางอย่างเกี่ยวกับการ distribute app ขึ้นสู่ App Store ครับ ปัญหาเริ่มมาจากการที่เรา Product -> Archive เพื่อเตรียมพร้อม app ก่อนขึ้นสังเวียน เราจะพบกับหน้าจอ Organizer – Archives ซึ่งมี app ที่เราเพิ่งกด Archive ไปเมื่อสักครู่อยู่ในนั้น แต่!! ไม่พบ application icon ครับ More

iOS Tutorial : UIWebView and UINavigationController on Xcode

UIWebView

สวัสดีครับ และแล้ว Tutorial ตัวที่ 2 ของผมก็ออกมา หลังจากหยุดเว้นเวรรคหลัง Tutorial ตัวแรกมาพอสมควร วันนี้ผมขอนำเสนอเกี่ยวกับการใช้งาน UIWebView และ UINavigationController อย่างง่ายมาให้รับชมกันนะครับ
More

Xcode : UIActionSheet Cancel Button doesn’t Work.

สวัสดีครับ วันนี้ผมจะมานำเสนอปัญหาของ UIActionSheet อย่างหนึ่งเวลาใช้งานครับ ปกติแล้วจะไม่เกิดปัญหาอะไร สามารถคลิกปุ่มได้ตามปกติ แต่เหตุการณ์นี้ปุ่ม Cancel จะมีตำแหน่งการกดที่คลาดเคลื่อนจากเดิมไปหน่อย
More