What new in iOS 7 SDK

iOS 7 မှာ အသစ်ပါတဲ့ feature တွေ။ framework အသစ်တွေ အကြောင်း
ရေးသားသူ : saturngod

iOS 7 SDK ကို WWDC စတဲ့ နေ့မှာ ထုတ်ပေးလိုက်ပါပြီ။ iOS 7 SDK နဲ့ အတူ Xcode 5 ပါ ပါဝင်လာပါတယ်။ iOS 7 က user တွေ အနေနဲ့ Design ပိုင်းပြောင်းလဲသွားတာကို ခံစားရပါလိမ့်မယ်။ သို့သော် Developer တွေအနေနဲ့တော့ Changes တွေ အများကြီးပါဝင်လာပါတယ်။ ဒီပြောင်းလဲမှုတွေဟာ iOS 7 အတွက် ရေးထားတဲ့ App တွေမှာ မြင်ရပါလိမ့်မယ်။ ဒါကြောင့် iOS 7 ထွက်လာတဲ့ အခါမှာ iOS 7 အတွက် App အသစ်များစွာ ထွက်ပေါ်လာလိမ့်မယ်လို့ မျှော်မှန်းရပါတယ်။ iOS 7 SDK မှာ ဘာတွေ ပြောင်းသွားလဲ ဆိုတော့

စတာတွေ အသစ်ပါဝင်လာပါတယ်။

iOS 7 အတွက် Development မစခင်မှာ iOS 7 Design Resource ကို လေ့လာဖို့လိုပါလိမ့်မယ်။ iOS 7 Design Resource မှာ

စတာတွေ ပါဝင်ပါတယ်။ iOS 6 နဲ့ သိပ်ပြီးကွာခြားမှုတော့ မရှိလှပါဘူး။ iOS 6 အခြေခံရှိပြီးသားသူတွေအနေနဲ့ကတော့ ခဏ ဖတ်လိုက်ရင် ရပါလိမ့်မယ်။ UIConfrol ပိုင်းမှာတော့ သိသိသာသာ ပြောင်းလဲမှုမရှိလှဘူး။ PickerView ကို အရင်ကလို View အောက်ဆုံးမှာ မဟုတ်တော့ပဲ Inline အသုံးပြုခွင့်ပေးထားပါတယ်။

1. UIKit Dyanamics

UIView Objects တွေအတွက် dynamic behaviors တွေ ထည့်သွင်းလို့ရပါပြီ။ UIDynamicItem protocol ကို အသုံးပြုပြီးတော့လည်း အခြား objects တွေမှာ ထည့်သွင်းလို့ရပါတယ်။ Dynamic behaviors တွေက real-world ပုံစံ ဖန်တီးလို့ရလာပါလိမ့်မယ်။ ဥပမာ ။။ ကမ္ဘာ့ ဆွဲအား (gravity) ကို application animation အနေနဲ့ ထည့်သွင်းလို့ရလာမယ်။ အောက်ပါ dyanmic behaviors တွေ ပါဝင်လာပါတယ်။ Game လုပ်ခဲ့ဖူးတဲ့သူတွေအတွက်ကတော့ အောက်ဖော်ပြပါ Behavior တွေနဲ့ စိမ်းမှာ မဟုတ်ပါဘူး။

UIAttachmentBehavior

UIAttachmentBehavior ဟာ object တွေကို အချင်းချင်း ချိတ်ဆက်ပေးထားပါတယ်။ item တစ်ခု ဒါမှမဟုတ် point တစ်ခု နဲ့ တစ်ခုကို ချိတ်ဆက်ထားပြီး object ကို ရွှေ့လိုက်တဲ့အခါမှာ ချိတ်ဆက်ထားတဲ့

object ပါလိုက်ပါရွှေ့လျားပါလိမ့်မယ်။

ICollisionBehavior

UICollisionBehavior ဟာ objects တွေကိုတစ်ခုနဲ့တစ်ခု ထိမိတဲ့နေရာတွေကို သတ်မှတ်ပေးထားပါတယ်။ objects ၂ ခု ထိမိတဲ့ အခါမှာ ဘာတွေ လုပ်မလဲဆိုတာတွေ အတွက် အသုံးပြုနိုင်ပါတယ်။

UIGravityBehavior

UIGravityBehavior ကတော့ dynamic items တွေကို gravity vector သတ်မှတ်ပေးလို့ရပါတယ်။ Dynamic items တွေဟာ တစ်ခုခုနဲ့ မထိမိခြင်း အရှိန်နဲ့ သွားအောင် ဖန်တီးပေးလို့ရပါတယ်။

UIPushBehavior

UIPushBehavior object တွေဟာ dynmatic itmes တွေကို အမြဲ force vector ဖန်တီးပေးနေပါတယ်။

UISnapBehavior

UISnapBehavior object ဟာ dynamic item ရဲ့ snap point တွေကို သတ်မှတ်ပေးလို့ပတ်။

Dynamic behaviors ဟာ animator object ထည့်သွငး်ပြီးမှသာ အလုပ်လုပ်ပါလိမ့်မယ်။ animator object ဆိုတာကတော့ UIDynamicAnimator class ရဲ့ instance တစ်ခုပါ။ Items တစ်ခုဟာ တစ်ခုထက်မက Dynamic Behavior ထည့်သွင်းနိုင်ပါတယ်။ သို့ပေမယ့် Behavior အားလုံးဟာ animator object တစ်ခုတည်း ဖြစ်ဖို့လိုပါတယ်။ ဒီထက်ပိုမိုပြီးသိလိုရင်တော့ UIKit framework မှာ ဆက်လျက် ဖတ်ရှုနိုင်ပါတယ်။

2. Text Kit

Text Kit ဟာ typography ကို အသုံးပြုထားတဲ့ app တွေအတွက် full-featured, high-level framework တစ်ခုပါ။ Text Kit ဟာ paragraphs , columns , pages စတဲ့ paragraph layout style တွေကို လွယ်လွယ်ကူကူ ဖန်တီးလို့ရပါတယ်။ graphics ရဲ့ နေရာတွေ သတ်မှတ်တာ နောက်ပြီး font တွေ အများကြီး အသုံးပြုတာတွေကို ဆောင်ရွက်ပေးနိုင်ပါတယ်။ Text Kit ဟာ UIKit text-based control တွေနဲ့ ပေါင်းစပ်ထားပြီးတော့ text တွေကို လွယ်လွယ်ကူကူ ပြုပြင်ဖန်တီးလာနိုင်ပါတယ်။ မြင်အောင်ပြောရမယ်ဆိုရင်တော့ Rich Text Editor တစ်ခုကို လွယ်လွယ်ကူကူ တည်ဆောက်လာနိုင်ပါလိမ့်မယ်။

Text Kit မှာ

အသေးစိတ်ကို သိလိုလျှင်တော့ WWDC 2013 ကို ကြည့်ရှုနိုင်သလို Text Programming Guide for iOS ကိုလည်း ဖတ်ရှုနိုင်ပါတယ်။

3. Multitasking Enhancements

iOS 7 မှာ app တွေကို background mode အနေနဲ့ run လို့ရပါပြီ။

Info.plist file ထဲမှာ UIBackgroundModes key ထဲကို minimum time ထည့်ပေးဖို့လိုပါတယ်။ အဲဒီ အချိန်ဟာ MinimumBackgroundFetchInterval: method မှာ အသုံးပြုပါလိမ့်မယ်။ ဒါ့အပြင် delegate မှာ ရှိတဲ့ application:performFetchWithCompletionHandler: method မှာလည်း ဝင်ရေးထားပေးဖို့လိုပါတယ်။ content အသစ် notification ရောက်လာလျှင် background မှာ download ချဖို့အတွက် info.plist မှာ UIBackgroundModes ကို remote-notification value ထည့်ခဲ့ပေးရပါမယ်။ ပြီးရင် အဲဒီ အတွက် push notification ရောက်လာလျှင် Delegate က application:didReceiveRemoteNotification:fetchCompletionHandler: ကို ရောက်သွားပါလိမ့်မယ်။ အဲဒီမှာ သင်ဖြစ်ချင်တဲ့ code ကို ရေးပေးဖို့လိုပါတယ်။ App ဟာ fetch သို့မဟုတ် remote-notification ကို support လုပ်ပေးပါတယ်။ fetch background mode အတွက် system က wake လုပ်ဖို့ အကောင်းဆုံး အချိန်ကို ဖန်တီးပေးပါလိမ့်မယ်။ ဥပမာ။ network condiction ကောင်းတဲ့ အချိန် ဒါမှမဟုတ် device ဟာ awake ဖြစ်ပြီး အချိန်တွေပေါ့။ remote-notification background mode ဟာ push notification ရတဲ့ အချိန်မှာ wake up ဖြစ်ပြီးနေပါပြီ။ app က content အသစ်တွေကို download ချနိုင်တယ်။ background မှာ download ချဖို့အတွက် NSURLSession class ကို အသုံးပြုဖို့လိုပါတယ်။ အဲဒီ class ဟာ NSURLConnection ကို ပိုမိုကောင်းမွန်အောင် ဖန်တီးထားတဲ့ class တစ်ခုပါ။ NSURLRequest နဲ့ background မှာ အလုပ်လုပ်နိုု်ပါတယ်။ NSURLSession object တစ်ခုဟာ multiple download နဲ့ upload task တွေကို လုပ်ဆောင်နိုင်ပါတယ်။ server နဲ့ authentication request ရဲ့ delegate တွေကိုလည်း handle လုပ်နိုင်ပါတယ်။

App States and Multitasking မှာ ဒီထက်ပိုပြီးတော့ အသေးစိတ်ဖတ်ရှုနိုင်ပါတယ်။

4. Sprite Kit Framework

iOS 7 မှာ game framework ပါဝင်လာပါတယ်။ အရင်တုန်းကတော့ OpenGL နဲ့ native ရေးရပေမယ့် အခု game ရေးဖို့ framework ပါ iOS 7 မှာ ပါဝင်လာပါတယ်။ Sprite Kit framework (SpriteKit.framework) ဟာ 2D နဲ့ 2.5D games တွေအတွက် optimized လုပ်ထားတဲ့ hardware-accelerated animation system တစ်ခုပါ။ Sprite Kit ဟာ game တွေ မှာ အသုံးပြုတဲ့ infrastructure တွေ ပါဝင်ပါတယ်။ graphcs rendering , animation system , sound playback support နဲ့ physics simulation engine စတာတွေ ပါဝင်ပါတယ်။ Sprite Kit ကို အသုံးပြုခြင်းအားဖြင့် အရင်ကထက် code ရေးဖို့ အပိုင်းသက်သာသွားစေပြီး Design ကို ပိုပြီး focus လုပ်လာနိုင်ပါလိမ့်မယ်။ သို့ပေမယ့် Cocos2D သို့မဟုတ် အခြား game framework အသုံးပြုနေသူတွေ အတွက်ကတော့ Sprite Kit က တမူ မထူးခြားလှပါဘူး။

Sprite Kit app ထဲက content တွေကို scense က organized လုပ်ပါတယ်။ Scene ထဲမှာ textured objects , video , path based shapes , Core Image Filters နဲ့ အခြား special effect တွေ ပါဝင်ပါတယ်။ Sprite Kit ဟာ objects တွေကို screen ပေါ်မှာ efficient ဖြစ်အောင် redner လုပ်ပေးပါမယ်။ scene ထဲမှာ ရှိတဲ့ content တွေကို animate လုပ်လို့ရပါတယ်။ နောက်ပြီးတော့ မိမိစိတ်ကြိုက် action တွေ အပြင် physics simulation engine ကို အသုံးပြုပြီးတော့ physical behaviros (gravity, attraction, or repulsion) စတာတွေကို လုပ်လို့ရပါတယ်။

Sprite Kit Programming Guide မှာ sprite kit အကြောင်း ဖတ်နိုင်ပြီးတော့ ဒီ code မှာ sprite kit အသုံးပြုပြီး game အစ အဆုံး ဖန်တီးတာကို ဖတ်နိုင်ပါတယ်။

5. Game Controller Framework

Game Contrller framework (GameController.framework) ဟာ app တွေမှာ hardware game controller ဖြစ်တဲ့ Made-for-iPhone/iPod/iPad (MFi) game controller နဲ့ configure လုပ်ဖို့ အတွက်ပါ။ Game Controllers ဟာ iOS device နဲ့ ချိတ်ပြီးတော့ ဆော့လို့ရတယ် ဒါမှမဟုတ် bluetooth wireless နဲ့လည်း ဆော့လို့ရပါလိမ့်မယ်။ framework ဟာ game controller အသုံးပြုလို့ရတာနဲ့ app ကို အကြောင်းကြားပေးသလို controller input တွေကို သတ်မှတ်ဖို့ရာမှာလည်း အသုံးပြုနိုင်ပါတယ်။ အသေးစိတ် ဖတ်ချင်ရင်တော့ Game Controller Programming Guide မှာ ဖတ်နိုင်ပါတယ်။

6. Game Center Improvements

Game Center နဲ့ ပတ်သက်ပြီးတော့ improvements လေးတွေ ရှိပါတယ်။ turn base game တွေမှာလည်း ကစားသူရဲ့ အလှည့်မရောက်ခင်မှာ chat လုပ်တာတို့ နောက်ပြီးတော့ ကစားသူ အခြင်းခြင်း trading လုပ်တာတို့ကို လုပ်လို့ရပါတယ်။ leaderboards ကိုလည်း ၂၅ ခု ကနေ အခု ၁၀၀ ထိ မြှင့်ပေးလိုက်ပါတယ်။ GKLeaderboardSet object ရဲ့ limit ကိုလည်း ၅၀၀ ထိ တိုးလိုက်ပါတယ်။ Game Center Programming Guide မှာ game center နဲ့ ပတ်သက်ပြီးတော့ ဖတ်နိုင်ပါတယ်။

7. Maps

Map Kit framework (MapKit.framework) မှာ အများကြီး improvement လုပ်ထားပါတယ်။ app ထဲမှာ location information တွေသာ မက 3D map ကို ပါ support လုပ်ပေးပါပြီ။ view ကိုလည်း programming ကနေ control လုပ်လို့ရပါတယ်။ Overlays ကိုလည်း map content ရဲ့ level အမျိုးမျိုးမှာ ထည့်သွင်းလို့ရတဲ့အတွက် data တွေကိုပြတဲ့ အခါ အပေါ် ၊ အောက် ထားပြီး ဖော်ပြလို့ရပါတယ်။ MKMapCamera object ကို map ထဲမှာ ထည့်လို့ရပါတယ်။ MKDirections က Apple ကနေ direction နဲ့ ပတ်သက်တဲ့ route information ကို ရယူနိုင်ပါတယ်။ MKGeodesicPolyline က line-based overlay ကို ဆွဲနိုင်ပါတယ်။ MKMapSnapshotter ကတော့ map က images တွေကို capture လုပ်ပေးနိုင်ပါတယ်။ visual representation က MKOverlayRenderer class ကို base လုပ်ထားပါတယ်။ overlay အတွက် ရိုးရိုးရှင်းရှင်း rendering လုပ်နိုင်ပါလိမ့်မယ်။ Tile တွေကို MKTileOverlay နဲ့ MKTileOverlayRenderer ပြောင်းပြီး သုံးထားပါတယ်။ Map Kit framework အကြောင်းကို Map Kit Framework Reference မှာ ဖတ်နိုင်ပါတယ်။

8. AirDrop

AirDrop ကို အသုံးပြုပြီး photos , documents, URL စတာတွေကို အနီးအနားမှာရှိတဲ့ device ကို share လို့ရပါတယ်။ AirDrop က UIActivityViewController မှာ ပါလာပြီးသားပါ။ UIActivityViewController Class က sharing လုပ်တဲ့ content ပေါ်မှာ မူတည်ပြီး ပြပေးပါတယ်။တကယ်လို့ အဲဒီ class ကို မသုံးရင်တော့ ကိုယ့်ဘာသာကိုယ် ပြန်ပြီး add ပေးဖို့လိုပါလိမ့်မယ်။ share data နဲ့ ပတ်သက်ပြီးတော့ UIActivityViewController Class Reference မှာ အသေးစိတ်ဖတ်နိုင်ပါတယ်။

9. Inter-App Audio

Audtio Unit framework (AudioUnit.framework) က Inter-App Audio ကို support လုပ်ပါတယ်။ သူက MIDI commands တွေကို ပေးပို့လို့ရသလို နဲ့ device တစ်ခုထဲမှာ ရှိတဲ့ app အခြင်းခြင်းတွေ ကြားမှာ steam လုပ်ပေးပါတယ်။ ဥပမာ။။ music ကို app ကို instrument အနေနဲ့ အသုံးပြုနိုင်ပါတယ်။ audio ကို အခြား app ကို ပေးပို့ပြီး process တွေ လုပ်နိုင်ပါတယ်။ AURemotelIO instance ကို သုံးပြီး publish လုပ်ဖို့လိုပါတယ်။ အဲဒီ အခါ audio component ကို အခြား process တွေက မြင်ရပါလိမ့်မယ်။ အခြား app ကနေ ခေါ်သုံးချင်ရင်တော့ iOS7 ရဲ့ audio component interface မှာ တွေ့နိုင်ပါတယ်။ အဲဒီ အကြောင်းကို Audio Toolbox Framework Reference ထဲမှာ ဖတ်နိုင်ပါတယ်။

10. Peer-toPeer Connectivity

Multipeer Connectivity framework (MultipeerConnectivity.framework) က အနားမှာရှိတဲ့ devices တွေကို ရှာတွေ့နိုင်ပြီးတော့ direct communication ကို internet connectivity မရှိပဲနဲ့ လုပ်နိုင်ပါတယ်။ အဲဒီ framweork ဟာ multipeer sessions တွေကို လွယ်လွယ်ကူကူ ဖန်တီးနိုင်ပြီး real time data တွေကို ပေးပို့ ရယူနိုင်ပါတယ်။ အဲဒီ framework ကို အသုံးပြုပြီး app တွေထဲမှာ အနားမှာ ရှိတဲ့ device တွေနဲ့ data exchange လုပ်လို့ရပါတယ်။ network ရှာဖွေရှာမှာ framework ကို programmatically နဲ့ သာမက UI base option နဲ့ ပဲ အသုံးပြုလို့ရပါတယ်။ MCPeerPickerViewController ကို app မှာ ထည့်သွင်းပြီးတော့ user ရွေးချယ်ဖို့ peer devices list ကို ဖော်ပြလို့ရပါတယ်။ MCNearbyServiceBrowser ကို အသုံးပြုပြီးတော့လည်း programmatically အရ peer devices တွေကို manage လုပ်လို့ရပါတယ်။ Multipeer Connectivity Framework Reference မှာ အသေးစိတ် ဖတ်ရှုနိုင်ပါတယ်။

New Frameworks

iOS7 framework အသစ်တွေက

Game Controller framework က game နဲ့ သက်ဆိုင်တဲ့ hardware နဲ့ communicating လုပ်ပေးတဲ့ interface ပါ။ Game Controller Framework မှာ ကြည့်ပါ။

Sprite Kit framework က spirte-based animation , graphics rendering တွေ ကို အထောက်အကူပေးပါတယ်။ Sprite Kit Framework မှာ ကြည့်ပါ။

Multipeer Connectivity framework က peer-to-peer networking apps တွေ အတွက်ပါ။ Peer-to-Peer Connectivity မှာ ကြည့်ပါ။

JavaScript Core framework (JavaScriptCore.framework) က standard Javascript objects အတွက် Objective-C wrapper classes ပါ။ အဲဒီ framework ကို အသုံးပြုပြီးတော့ Javascript code တွေကို objective-c ဘက်မှာ run နိုင်ပါတယ်။ JSON data တွေကို parse လုပ်နိုင်ပါတယ်။ framework အကြောင်းကို header files တွေ ဖတ်ကြည့်ပါ။

Media Accessibility framework (MediaAccessibility.framework) က သင့် media file က closed-caption တွေကို ဖော်ပြပေးဖို့ အသုံးပြုနိုင်ပါတယ်။

Safari Services framework (SafariServices.framework) က Safari reading list ထဲကို programmatically နဲ့ URL တွေ ထည့်သွင်းနိုင်ပါတယ်။