iOS SDK Release Notes for iOS 6 beta 3

Contents:

Introduction
Bug Reporting
Notes and Known Issues


Introduction

iOS SDK 6.0 provides support for developing iOS apps and includes the complete set of Xcode tools, compilers, and frameworks for creating apps for iOS and OS X. These tools include the Xcode IDE and the Instruments analysis tool among many others.

With this software you can develop apps that run on iPhone, iPad, or iPod touch running iOS 6. You can also test your apps using the included iOS Simulator, which supports iOS 6. iOS SDK 6.0 requires a Macintosh computer running OS X 10.7.4 or higher (Lion).

This version of iOS is intended only for installation on devices registered with Apple's developer program. Attempting to install this version of iOS in an unauthorized manner could put your device in an unusable state.

For more information and additional support resources, visit:

http://developer.apple.com/programs/ios/

Bug Reporting

Please report any bugs not mentioned in the “Notes and Known Issues” section using the Apple Bug Reporter on the Apple Developer website (http://developer.apple.com/bugreporter/). Additionally, you may discuss these issues and iOS SDK 6 in the Apple Developer Forums: http://devforums.apple.com. You can get more information about iCloud for Developers at: http://developer.apple.com/icloud

Notes and Known Issues

The following issues relate to using iOS SDK 6.0 to develop code.

Address Book

  • When an app is in a fresh privacy state and tries to present a ABNewPersonViewController, the user cannot dismiss that view controller properly even if they allow access to contacts. The user must force quit the app and relaunch.

  • Requesting access to contacts:

    • Users are able to grant or deny access to contact data on a per-app basis. To request access to contact data, call the ABAddressBookRequestAccessWithCompletion function after calling the ABAddressBookCreateWithOptions function. The ABAddressBookRequestAccessWithCompletion function does not block the app while the user is being asked to grant or deny access. Until access has been granted, the ABAddressBookRef object will not contain any contacts and any attempt to modify contacts fails with a kABOperationNotPermittedByUserError error. The user is prompted only the first time access is requested; any subsequent calls to ABAddressBookCreateWithOptions will use the existing permissions. The completion handler is called on an arbitrary queue. If the ABAddressBookRef object is used throughout the app, then all usage must be dispatched to the same queue to use ABAddressBookRef in a thread-safe manner.

  • Checking access authorization status:

    • An app can use the authorization status API to check if it can access contacts, calendars, reminders or photo library. This API is independent from the the request access API and will not prompt the user to grant or deny access. With this API an app can adjust the display of its UI elements that would access the data class. For example, if access to contacts is authorized or not determined then a UI button to pick a contact can be displayed.

    • For Address Book, call the ABAddressBookGetAuthorizationStatus function. For Event Kit, call the authorizationStatusForEntityType: class method of EKEventStore. For Assets Library, call the authorizationStatus class method of ALAssetsLibrary. The meaning of the status values that are returned is as follows:

      • Authorization Status Not Determined - The user has not yet made a choice regarding whether this app can access the data class.

      • Authorization Status Restricted - This app is not authorized to access the data class. The user cannot change this app’s status, possibly due to active restrictions such as parental controls being in place.

      • Authorization Status Denied - The user explicitly denied access to the data class for this app.

      • Authorization Status Authorized - This app is authorized to access the data class.

Apple TV

  • In some cases, the screen may show the wrong resolution. Restart your Apple TV to return it to the correct resolution.

  • FIXED: Netflix videos may not resume where you left off.

  • FIXED: The History list in the YouTube app gets cleared when you exit and reenter the app.

  • Apple TV may be slow to respond while a download is in progress in the background.

  • Apple TV may restart while using the Remote app.

  • Apple TV may restart when changing the system language.

  • Photo Stream does not load when logging in a second time. Restart Apple TV to resolve.

  • Music does not play during photo slideshows.

  • New Behaviors:

    • Pick remote speakers in Settings > AirPlay.

    • Set an onscreen code for AirPlay in Settings > AirPlay.

    • Save multiple iTunes Store accounts in Settings > iTunes Store.

    • Press and hold the Select button to rearrange icons on the main menu.

    • Hide the main menu icons in Settings > General > Parental Controls.

Bonjour

  • The NSNetService class and CFNetService APIs do not include P2P interfaces by default. To browse, register, or resolve services over P2P interfaces, an app needs to use the Bonjour DNSService*() APIs noted below.

  • Setting the interfaceIndex parameter to kDNSServiceInterfaceIndexAny in the following API's will not include P2P interfaces by default. To include P2P interfaces, you must now set the kDNSServiceFlagsIncludeP2P flag when using kDNSServiceInterfaceIndexAny or set the interfaceIndex to kDNSServiceInterfaceIndexP2P. The affected APIs are:

    • DNSServiceBrowse

    • DNSServiceRegister

    • DNSServiceResolve

    • DNSServiceRegisterRecord

    • DNSServiceQueryRecord

Dictionary

  • There is a known issue with dictionaries when attempting to define a word in any language other than English or Japanese. When the reference library is presented, the user is presented with the option to download a dictionary - that download may not begin. The user can tap outside the popover on an iPad or tap the "Done" button on the iPhone or iPod touch in order to dismiss the download request.

Event Kit

  • Requesting access to calendars or reminders:

    • Users are able to grant or deny access to event and reminder data on a per-app basis. To request access to event and/or reminder data, call the requestAccessToEntityType:completion: method of EKEventStore. This will not block the app while the user is being asked to grant or deny access. Until access has been granted for an entity type, the event store will not contain any calendars for that entity type, and any attempt to save data will fail.

    • The user will only be prompted the first time access is requested; any subsequent instantiations of EKEventStore will use the existing permissions. The completion handler is called on an arbitrary queue.

Game Center

  • When creating a new Game Center account in-app on the iPad, the popover for selecting the month for your date of birth shows up with no content to select.

  • The authenticate method of GKLocalPlayer has been removed. Authentication will automatically commence when the completion handler is set.

iCloud

  • When creating an iCloud account, you can use any email based Apple ID, or you can use your existing iCloud account. If you had a MobileMe account that you have not yet moved to iCloud, you must move it first by visiting http://me.com. Moving to iCloud is only available for a limited time. Logging into a MobileMe account is not supported in iOS 6.

    • icloud.com email addresses are now available for iCloud mail users. Users signing up for new Apple IDs, or enabling Mail on their iCloud account for the first time, will automatically receive an @icloud.com email address instead of a me.com email address. iCloud users with @me.com addresses that have been used with iOS 6 beta 3 will receive an @icloud.com email address that matches their @me.com address.

    • icloud.com email cannot be sent from www.icloud.com. Users should use http://beta.icloud.com at this time if they wish to send email from their icloud.com address using a web browser.

  • Provisioning profiles must be enabled for iCloud in the iOS Provisioning Portal. To enable a provisioning profile for iCloud, navigate to the App ID section of the iOS Provisioning Portal and configure your App ID for iCloud. After enabling the App ID for iCloud, regenerate your provisioning profiles to enable them for iCloud.

  • The setSortDescriptors: method of NSMetadataQuery is not supported.

  • In iOS 6, files that are protected via Data Protection cannot be used with iCloud Storage APIs.

  • File names are case-insensitive in OS X but case-sensitive in iOS. This can lead to problems when sharing files between the two platforms using iCloud. You should take steps on iOS to avoid creating files whose names differ only by case.

  • The behavior of coordinated read operations on iCloud Documents has changed.

    On previous iOS releases, when your app performed a coordinated read operation on a file or package, and the iCloud daemon noticed that there was a newer version of the item available, the coordinated read operation blocked until the newer version of the item was downloaded and written to the disk.

    Starting in iOS 6 beta 3, when you start a coordinated read operation on a file or package for which you already have a local version, the coordinated read will be granted as soon as possible, and the new version, if any, will download in the background. This call will block for downloading reasons only if you do not have any version of the file available locally.

    Additionally, when the file is conflicted, the iCloud daemon will not wait until it has all the conflict losers of the file available to make the file available to your app. It will make the different versions of the conflicted file available as soon as it can. Your app can use the existing file coordination and the UIDocument callbacks to be notified when the conflict losers have been downloaded and are available.

iMessage & FaceTime

  • FIXED: The Answer and Decline buttons are missing when receiving calls in landscape orientations.

iTunes

  • iTunes 10.6.3 is required for iOS SDK 6.0.

  • FIXED: When restoring from an iTunes backup, the device intermittently shows up as a new device after rebooting. If that happens, set up the device as a “new device” when prompted to restore for the 2nd time. All data should have been restored correctly but sync settings including App arrangement in iTunes are lost.

Maps

  • In iOS 6 and later, Map Kit is built on a new infrastructure hosted by Apple. Earlier iOS releases will continue to use Google’s service.

    • API compatibility will be maintained (see known issues below).

    • Maps are now supported in the Simulator.

    • Map data will continue to evolve—only a limited amount of high resolution satellite imagery is currently available.

  • FIXED: If Maps is not running in the background, a "Maps cannot connect to the internet" error is displayed when it is launched from a 3rd party app.

  • FIXED: If Maps has not yet been launched, the current location does not show up when it is launched from a 3rd-party app.

  • Routing apps that do not specify a coverage file during development will always be displayed in the Maps routing search results.

  • Testing and debugging of coverage files for routing apps is only supported during development through the Xcode "Run" workflow. (You can specify the coverage file for a given Run scheme using the Options pane of the Run section of the scheme editor.) Apps that are archived and distributed (outside of the App Store) onto devices will not have access to the app's coverage files.

  • Maps does not zoom into the current location when launched from a 3rd party app.

Newsstand

  • Only simple http downloads will work with Newsstand.

Passbook

  • FIXED: An airplane icon appears between the origin and destination for all transit types.

  • The "Description" field is now a required field for a Pass. All passes created without it will fail to validate and will not ingest.

  • FIXED: The Passbook database has been reset. You’ll need to add your passes again.

  • Passbook in the simulator no longer requires https/ssl when using a webServiceURL when ingesting a pass.

  • Unable to show boarding passes on lock screen.

Reminders

  • FIXED: There are issues when adding and editing reminders in the Reminders app on iPhone devices:

    • The Done button is missing when adding a new reminder.

    • The app crashes when you tap the Edit button to edit a reminder.

Security

  • In iOS 5, signing a certificate with an MD5 signature is not supported. Please ensure that certificates use signature algorithms based on SHA1 or SHA2.

  • In iOS 6, there are improved privacy controls for Calendars, Reminders, Contacts, and Photos.

    • Users will see access dialogs when an app tries to access any of those data types. The user can switch access on and off in Settings > Privacy.

    • Developers can set a "purpose" string for each class of isolated data. iOS displays this string to users to help them understand why their data is being requested. These strings can be added using Xcode's Project editor, in the Info tab. The relevant key names begin with the string "Privacy -".

    • There are changes to the Event Kit and Address Book frameworks to help developers with this feature.

Simulator

  • The app delete confirmation alert panel takes a while to show up in iOS Simulator.

  • FIXED: Tapping the buy button in the view of an SKStoreProductViewController object in iOS Simulator causes the app to crash.

  • No privacy alerts are displayed in iOS Simulator for apps that access Photos, Contacts, Calendar and Reminders.

  • Downloading in-app purchase hosted content in iOS Simulator is not supported.

  • When attempting to play an MP3 sound in the Simulator, you will hear a popping sound instead.

  • FIXED: Using the iOS 5.1 SDK with the iPad (Retina) profile will result in a SpringBoard crash. The iOS 5.1 SDK works with all other profiles and the iPad (Retina) SDK works with the iOS 6.0 SDK.

  • FIXED: Ads of type ADAdTypeMediumRectangle do not appear in iPad Simulator.

Shared Photo Stream

  • User must go to Settings > iCloud to ensure that they receive Shared Photo Stream Notifications.

  • In order to share a Photo Stream with iOS 6 beta, you must invite someone using their iCloud email address or they will not receive the invitation.

  • Upgrading from iOS 6 beta 1 to beta 2 will cause your device to re-download all of your Shared Photo Streams.

  • The Shared Photo Stream feature is set to OFF when updating from iOS 6 beta 1 to a later release. The default setting should be ON.

  • Turning off Shared Photo Streams may leave camera in an unresponsive state, force quitting camera will resolve this issue.

Social

  • Weibo shows up in the Settings app only if a Chinese keyboard is enabled.

  • The requestAccessToAccountsWithType:withCompletionHandler: method of ACAccountStore is now deprecated. To access user accounts, please use the requestAccessToAccountsWithType:options:completion: method.

    In the options parameter of this new method, pass nil to access Twitter and Weibo accounts. To access Facebook accounts, pass a dictionary with the following keys (which are documented in ACAccountStore.h):

    • ACFacebookAppIdKey

    • ACFacebookPermissionsKey

    • ACFacebookPermissionGroupKey

    You should no longer add this dictionary to your app's Info.plist file, as was required in beta 1.

SpringBoard

  • FIXED: After restoring a device in iTunes or performing an "Erase All Contents and Settings", the current wallpaper may not appear until the device is rebooted once.

Status Bar

  • It is now possible to set status bar tint parameters in your app’s Info.plist file. You might do this to ensure that the status bar color matches the navigation bar color of your app during startup. To set the status bar tint, add the UIStatusBarTintParameters key to your Info.plist file. The value of this key is a dictionary with the appropriate values describing the navigation bar your app has at startup time. Inside the dictionary should be the UINavigationBar key, whose value is also a dictionary. That dictionary contains the initial navigation bar's style (with the Style key) and whether it's translucent (with the Translucent key). If your navigation bar uses them, you can also specify its tint color (with the TintColor key), or the name of its custom background image (with the BackgroundImage key).

UIKit

  • In iOS 5.1, the UISplitViewController class adopts the sliding presentation style when presenting the left view (previously only seen in Mail). This style is used when presentation is initiated either by the existing bar button item provided by the delegate methods or by a swipe gesture within the right view. No additional API adoption is required to obtain this behavior, and all existing API, including that of the UIPopoverController instance provided by the delegate, will continue to work as before. If the gesture would be insupportable in your app, setting the presentsWithGesture property of your split view controller to NO disables the gesture. However, disabling the gesture is discouraged because its use preserves a consistent user experience across all apps.

  • FIXED: In iOS 6, changes have been introduced so that you no longer need to set a delegate and implement a method for Single-Finger and Single-Tap gesture recognizers, in an effort to make them work well with the UIControl objects.

  • In iOS 6 and later, the UIWebView class paints its contents asynchronously.

  • FIXED: Developers trying out Auto Layout with UIScrollView objects might notice jitters in the scroll indicators on devices with Retina displays.

  • Autorotation is changing in iOS 6. In iOS 6, the shouldAutorotateToInterfaceOrientation: method of UIViewController is deprecated. In its place, you should use the supportedInterfaceOrientations and shouldAutorotate methods.

    • More responsibility is moving to the app and the app delegate. Now, iOS containers (such as UINavigationController) do not consult their children to determine whether they should autorotate. By default, an app and a view controller’s supported interface orientations are set to UIInterfaceOrientationMaskAll for the iPad idiom and UIInterfaceOrientationMaskAllButUpsideDown for the iPhone idiom.

    • A view controller’s supported interface orientations can change over time. Even an app’s supported interface orientations can change over time. The system asks both the topmost full screen view controller (typically the root view controller) for its supported interface orientations whenever the device rotates or whenever a view controller is presented with the full screen modal presentation style. Moreover the supported orientations are retrieved only if this view controller returns YES from its shouldAutorotate method. The system intersects the view controller’s supported orientations with the app's supported orientations (as determined by the Info.plist file or the app delegate's application:supportedInterfaceOrientationsForWindow: method) to determine whether to rotate.

    • The system determines if an orientation is supported by intersecting the value returned by the app’s supportedInterfaceOrientationsForWindow: method with the value returned by the supportedInterfaceOrientations method of the topmost fullscreen controller.

    • The setStatusBarOrientation:animated: method is not deprecated outright. However it now works only if the supportedInterfaceOrientations method of the topmost full screen view controller returns 0. This puts the responsibility of ensuring that the status bar orientation is consistent into the hands of the caller.

    • For compatibility, view controllers that still implement the shouldAutorotateToInterfaceOrientation: method do not get the new autorotation behaviors. (In other words, they do not fall back to using the app, app delegate, or Info.plist file to determine the supported orientations.) Instead, the shouldAutorotateToInterfaceOrientation: method used to synthesize the information that would be returned by the supportedInterfaceOrientations method.

  • FIXED: In certain situations, the Auto Layout system might not engage automatically for a view. To workaround this problem, override the requiresConstraintBasedLayout class method in your view and return YES from your implementation.

  • The willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration:, and didRotateFromInterfaceOrientation: methods are no longer called on any view controller that makes a full screen presentation over itself—for example, by calling presentViewController:animated:completion:.

    • You should make sure that your apps are not using these methods to manage the layout of any subviews. Instead, they should use the view controller’s viewWillLayoutSubviews method and adjust the layout using the view’s bounds rectangle.

  • In iOS 6, the viewWillUnload and viewDidUnload methods of UIViewController are now deprecated. If you were using these methods to release data, use the didReceiveMemoryWarning method instead. You can also use this method to release references to the view controller’s view if it is not being used. You would need to test that the view is not in a window before doing this.

  • FIXED: Calling any of the attributed string drawing methods without specifying a value for the NSFontAttributeName attribute is likely to throw an exception. The workaround is to set a value for the NSFontAttributeName key before drawing or sizing an NSAttributedString object.

  • Setting values for the shadowOffset or shadowColor properties of a UILabel object, whose attributedText property contains a valid attributed string, is unsupported. Use the NSShadowAttributeName attribute of the attributed string to set the shadow instead.

  • Due to compatibility concerns, the NSBaselineOffsetAttributeName attribute is no longer supported in iOS 6.

  • The NSTextAlignmentNatural value is unsupported and will throw an exception when used with the textAlignment property of UILabel or supplied as the alignment parameter to the drawInRect:withFont:lineBreakMode:alignment: method of NSString.

  • The setContentStretch: method of UIView has been deprecated in this beta release. To achieve the same effect, use the resizableImageWithCapInsets: method of UIImage and display the image with a UIImageView.

  • The resizableImageWithCapInsets: method of UIImage effectively resizes images by tiling. As a performance optimization, it uses stretching rather than tiling when the user would not be able to tell the difference, like when a single column or row is being stretched. But in certain circumstances, one might want to actually stretch some region of an image. In iOS 6, the resizableImageWithCapInsets:resizingMode: method allows the caller to specify a tiling or stretching resizing mode.

  • The UICollectionViewLayout class has changed:

    • The class now supports the customization of the animations created during rotation. The names of methods for customizing insert and delete animations have also changed so that the same hooks can be used for rotations as well as for insertions and deletions.

    • The class has changed some method names. Specifically, decoration views are no longer referred to by "reuse identifier" but rather by "element kind." Apps that are using decoration views will need to modify their code and rebuild to accommodate this.

  • FIXED: In iOS 6, a bug was fixed where UIWebView.isLoading was set to NO before the main frame finished loading. Now, UIWebView.isLoading is set to NO when the main frame is done loading.

  • The bottom edge of a UILabel view is now different from its baseline.

    Previously, auto layout was interpreting the bottom of a UILabel to be the same as its baseline. While convenient in many cases, it caused problems if you wanted to place the top edge of one label against the bottom edge of another. In such a scenario, the bottom label would overlap the top one, and descenders from the top label could crash into ascenders from the bottom label. Now, auto layout interprets UILayoutAttributeBottom as the bottom of the text box (presuming the label is not bigger than its intrinsic content size), and UILayoutAttributeBaseline as the baseline of the text. If you have already created code for laying out labels according to the bottom or center point, your text will move around a little and you will need to adjust your constraints.

  • Apps with table views in their nib or storyboard files, and that were built using previous versions of iOS 6 beta, will require a clean build with beta 3 and newer.

  • Here are some notes regarding auto layout support for UIScrollView:

    • In general, auto layout considers the top, left, bottom, and right edges of a view to be the visible edges. That is, if you pin a view to the left edge of its superview, you're really pinning it to the minimum x-value of the superview’s bounds. Changing the bounds origin of the superview does not change the position of the view.

    • The UIScrollView class scrolls its content by changing the origin of its bounds. To make this work with auto layout, the meaning of the top, left, bottom, and right edges within a scroll view now mean the edges of its content view.

    • The constraints on the subviews of the scroll view must result in a size to fill, which is then interpreted as the content size of the scroll view. (This should not be confused with the intrinsicContentSize method used for auto layout.) To size the scroll view's frame with auto layout, constraints must either be explicit regarding the width and height of the scroll view or the edges of the scroll view must be tied to views outside of its subtree.

    • Note that you can make a subview of the scroll view appear to float (not scroll) over the other scrolling content by creating constraints between the view and a view outside the scroll view's subtree, such as the scroll view's superview.

    • Here are some examples of how to configure the scroll view:

      • Mixed approach:

        1. Position and size your scroll view with constraints external to the scroll view—that is, the translatesAutoresizingMaskIntoConstraints property is set to NO.

        2. Create a plain UIView content view for your scroll view that will be the size that you want your content to have. Make it a subview of the scroll view but let it continue to translate the autoresizing mask into constraints:

          UIView *contentView = [[UIView alloc]
              initWithFrame:CGRectMake(0,0,contentWidth,contentHeight)];
          [scrollView addSubview:contentView];
          // DON'T change contentView's translatesAutoresizingMaskIntoConstraints,
          // which defaults to YES;
        3. Set the content size of the scroll view to match the size of the content view:

          [scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];
        4. Create the views you want to put inside the content view and configure their constraints so as to position them within the content view.

          Alternatively, you can create a view subtree to go in the scroll view, set up your constraints, and call the systemLayoutSizeFittingSize: method (with the UILayoutFittingCompressedSize option) to find the size you want to use for your content view's size and the contentSize property of the scroll view.

      • Pure auto layout approach:

        1. In this case translatesAutoresizingMaskIntoConstraints must be set to NO on all views involved.

        2. Position and size your scroll view with constraints external to the scroll view.

        3. Use constraints to lay out the subviews within the scroll view, being sure that the constraints tie to all four edges of the scroll view and do not rely on the scroll view to get their size.

          A simple example would be a large image view, which has an intrinsic content size derived from the size of the image. In the viewDidLoad method of your view controller, you would include code like the following:

          UIScrollView *scrollView = [[UIScrollView alloc] init];
          UIImageView *imageView = [[UIImageView alloc] init];
          [imageView setImage:[UIImage imageNamed:"MyReallyBigImage"]];
          [self.view addSubview:scrollView];
          [scrollView addSubview:imageView];
           
          scrollView.translatesAutoresizingMaskIntoConstraints = NO;
          imageView.translatesAutoresizingMaskIntoConstraints = NO;
           
          NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(scrollView,imageView);
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];
          [scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" options:0 metrics: 0 viewsDictionary:viewsDictionary]];

          This would give you a scroll view that resized as the view controller's view resized (such as on device rotation), and the image view would be a scrolling subview. You don't have to set the content size of the scroll view.

Safari & WebKit

  • WebKit on iOS now supports the requestAnimationFrame and cancelAnimationFrame methods in JavaScript, as described here http://www.w3.org/TR/animation-timing/.

    • Note that because the specification is still at the Working Draft state, these methods have the webkit prefix, so they are window.webkitRequestAnimationFrame, window.webkitCancelAnimationFrame.

  • The default app cache quota has been increased from 5MB to 25MB.

  • The JPEG subsampling threshold was increased from 2 MP (megapixels) to 5 MP on all supported hardware except iPhone 3GS and iPod touch (4th gen).

  • Support has been added for <input type="file"> tags in web forms. Users can upload existing photos and videos from their photo library or take a picture or video using the camera. Previously this form control was always disabled.

  • With Safari 6.0 on OS X, developers can now use the Web Inspector (web development tool) with attached iOS devices and iOS Simulator. Developers can use the Web Inspector to debug Safari and the UIWebView class in their own apps built and run from Xcode. This replaces the Debug Console banner in Safari.

  • In iOS 6 and later, web data (SQL Web Storage and LocalStorage) from a UIWebView object can be stored in a directory that will be backed up. To enable backing up this data, set the WebKitStoreWebDataForBackup key to YES in your app’s user defaults. This should be done only if your app relies on web content data that cannot be reloaded. If your UIWebView object opens links to arbitrary web content, this key should be set to NO. Toggling the value of this key will not preserve existing web view data.

  • In iOS 6 and later, Safari no longer registers for the common feed: RSS/ATOM scheme. Apps that can view those types of feeds are encouraged to register for that URL scheme.

  • WebKit no longer always creates hardware-accelerated layers for elements with the -webkit-transform: preserve-3d option. Authors should stop using this option as a way to get hardware acceleration.

  • Experimental CSS3 Flexbox support will be disabled. Please switch from using -webkit-flexbox and -webkit-inline-flexbox to -webkit-box and -webkit-inline-box.

  • As of iOS 6, embedded YouTube URLs in the form of https://www.youtube.com/watch?v=oHg5SJYRHA0 will no longer work. These URLs are for viewing the video on the YouTube site, not for embedding in web pages. Instead, the format that should be used is described in https://developers.google.com/youtube/player_parameters.

  • In iOS 6, the keyboardDisplayRequiresUserAction property was added to the UIWebView class. The property defaults to YES, which means that calling focus() on a form element will not bring up the keyboard. By changing the property to NO, a JavaScript call to focus() on a form element will focus the element and automatically bring up the keyboard.

  • As of iOS 6, calling focus() on a form element in a web app will focus the element.


 

몇일전 기사를 보고 애플 지도상에서 의 독도를 검색해봤더니;;

 

역시나 기사대로 였다;;

 

자세한 항의 방법이나 문제 제기 방법에 대한 내용이 안보이는 터라~

 

혼자 해보고 맞는 방법이다 싶어 이렇게 약소하나마 적어본다~

 

1. 우선 애플 지도에서 검색을 합니다 . 기분나쁘지만 일단 검색어를    竹島

    검색된 위치에서   竹島 >  를 터치 합니다.

 

 

 

 

2. 검색된 내용에 대한 위치 정보 및 기본 정보를 보여주는데요. 이 부분에 하단부분에 보면 문제 리포트 가 있습니다.

문제제기를 바로 이곳에서 할수있겠습니다.!! 바로 문제 리포트 터치

 

 

 

 

 

3. 어떤 문제에 대한 리포트를 할것인지를 선택하게 되어있습니다.

우리는 타케시마라는 표시가 잘못되있다는걸 문제 리포트 할것이니~

 

정보가 올바르지 않음 을 터치 한 후에 다음을 터치 합니다.

 

 

 

 

4.  Suggest corrections below ~ (아래에서 수정 내용을  제안 하라고 합니다, 즉 수정 한뒤 보내기 를 터치하란 소리~)

 

수정할 부분인

 

name 부분을 터치 후 Dokdo

 

하는김에 주소도 완벽하게 address 터치 후 Dokdo-ri, Ulleung-eup, Ulleung-gun, Gyeongbuk, Korea 를 입력

 

그리고 맨 아래에 url 을 외교통상부 독도 주소를 적어주면 좋을듯 해서 ~  http://dokdo.mofat.go.kr/ 로 수정~

 

(아이폰/아이패드시라면 제 블로그 모바일로 직접 접속후에 복사하시길 추천)

 

수정후에 오른쪽위에 보내기 터치 하시면 완료~!! (해보니 여러번해도 가능한듯 해보입니다~)

 

 

 

 

ps. 왜 한글로 독도 가 아닌 Dokdo 냐 하시는분이 있을까 싶어 ~

 

일단 한국어 아는사람중에 독도가 우리땅인거 모른 사람은 없을꺼라고 보이는게 그 이유구요 한글로 독도 이렇게 리포트하시는거야 뭐 하시는분 맘이겠죠 ㅎㅎ

 

저번에 컬투쇼에서 들어보니 독도 표기가 반크 외에 다른 지식인분들 활동 전에 5% 였고 활동 후에 겨우 30% 이게 현실이라고 하네요~

 

국력도 물론 중요하지만 우리 같은 애플 디바이스 사용자인 국민으로도 이 정도 별로 어렵지않은 문제리포트~ 할수 있으리라 봅니다.

 

개발자 버전 사용자 만이 아닌 9월 iOS6 정식때도 변화가 없다면 한국 아이폰/아이패드 유저의 단합된 능력을 보여주자구요~!

 

 

 

 

 

 

원래 아이폰은 http://icloud.com 에서 로긴한뒤 내아이폰 찾기로 위치 추적이 가능하다..

하지만 국내 지도정보를 해외서버에 보관할수 없다라는 법 때문에 아이폰의 이 서비스는 사용할수가 없다.

구글맵처럼 우리측(SK) 지도 데이터를 가져가 쓰도록 하면될거 같은데... 왜 이런걸 제휴를 안걸까...

올레kt에서 위치찾기가 가능하다.. 유료로;;

올레닷컴 메인에서 상품안내 > 모바일 > 위치/교통 으로 가면 친구 찾기란 서비스가있다.

바로가기 : http://mobile.olleh.com/index.asp?code=HFA0000

친구찾기 메인에 보면 My 친구찾기 란 부분에 현재 상태가 나오게 되어있다.

친구찾기 서비스 동의해서 가입했다면 가입중이라고 나올것이고 그렇지 않다면..
 
친구찾기 가입하기(무료) 버튼이 보일것이다. 일단 클릭해서 가입한다.~


유료서비스인 부분도 있지만 유료 정액제 가입할 필요는 전혀 없다.

체험을 원한다면 오른쪽하단에 1일 무료이용권 이용하기 로 시도 해보면 될듯~

일단 친구찾기 가입하기(무료) 클릭하면 뜨는 팝업창에서 약관 동의 해주고 비밀번호 설정해주면 가입완료.

친구찾기 홈 부분에서 새로고침 한번 해주고 나서 좌측메뉴중에 내 위치보기/전송 을 클릭하면 아래와 같은 화면이 나온다.


뭐 보이는데로 맨위에 내위치 보기 부분에 내위치 조회 버튼을 클릭~


100원의 정보 이용료를 받아 챙겨주신다;;;

몇초의 로딩 시간후 찾기 결과가 화면에 출력된다.

대도시인경우  1km  이내의 오차범위가 존재한다고 한다.



뭐니 뭐니 해도 잃어 버리지 않는게 최고~!! 겠지만;;;

이 글을 보시는 분들이 다 속쓰린 분들일거라 생각하며 꼭 찾기를 빌겠습니다!!


아이폰 분실시 행동강령~

http://icloud.com 에서 로긴 한뒤 내 아이폰 찾기 회면을 조회한뒤 사운드 재생 또는 메시지 보내기 를 클릭한뒤 메시지를 적고 보낸다. 보낼때 핸드폰 분실했으니 찾아달란 메시지와 함께 연락처를 적어두면 좋다.

이 작업전에 자동잠금 사용하지 않는사용자라면 원격 잠금을 먼저 실행하는게 좋고~
엄청나게 중요한 자료가 있고,유출되면 큰일나는 내용이 있다면 미리 삭제를 해버리는것도 좋을듯 싶다.. 메시지 보내고 나면 악의에찬 습득자는 핸펀을 아예 꺼버릴지도 모르니..(컴퓨터가 꺼져있다면 위치없음 메시지가 아닌 오프라인이란 메시지가 출력된다)




나의 장비부분을 자세히보면 위치 확인 중 상태 였다가 위치 없음으로 바뀔것이다.
만역 기기가 전원이 꺼져 있다면 오프 라인 이라고 표시된다.

딱보면 알겠지만 자신이 구매하고 소유하고 있는 기기가 다 출력된다. 하나의 애플 아이디에 묶여 있다면~

사용하던 3Gs , Macbook Air , 4s 까지 (심지어 교품받았던 장비까지목록에 나와 삭제 했.....)


얘기하던 메시지 보내기 ~ 보이는거 처럼 메시지 작성 칸이 나오고 사운드 재생 설정이 가능하다.
테스트 해봐서 느낀건데 .. 아마 제법 오랬동안 사운드가 울리는듯 하다... 소리도 그렇게 듣기 좋은 소리가 아닌듯;;



icloud 의 기능으로도 못찾고 있다면~ 통신사 측 위치찾기 서비스를 요청 해본다. sk는 신분증 들고 대리점을 찾아가야 하는듯 하다.

스티브 잡스
국내도서
저자 : 월터 아이작슨(Walter Isaacson) / 안진환역
출판 : 민음사 2011.10.25
상세보기





27일 아침 7시 반쯤 beta4 업데이트 안내 메일이 왔습니다.

안그래도 아이튠즈까지 베타 깔면서 업뎃하기도 귀찮고 그랬었는데 혹시나 했더니 역시 이번에 무선 업데이트를 지원해주고있었습니다.


일반 > 소프트웨어 업데이트

skyand96.com

skyand96.com






설치완료~


[iOS5 베타4 릴리즈노트]

iOS SDK Release Notes for iOS 5.0 beta 4

Important: This is a preliminary document for an API or technology in development. Although this document has been reviewed for technical accuracy, it is not final. Apple is supplying this information to help you plan for the adoption of the technologies and programming interfaces described herein. This information is subject to change, and software implemented according to this document should be tested with final operating system software and final documentation. Newer versions of this document may be provided with future seeds of the API or technology.
Contents:

Introduction
Bug Reporting
Notes and Known Issues

Introduction

iOS SDK 5.0 provides support for developing iOS applications and includes the complete set of Xcode tools, compilers, and frameworks for creating applications for iOS and Mac OS X. These tools include the Xcode IDE and the Instruments analysis tool among many others.

With this software you can develop applications that run on iPhone, iPad, or iPod touch running iOS 5.0. You can also test your applications using the included iOS Simulator, which supports iOS 5.0. There are two Xcode iOS SDK 5.0 images, one for installing on a Macintosh computer running Mac OS X 10.6.7 (Snow Leopard) or later, the other for installing on a Macintosh computer running Mac OS X 10.7 (Lion).

This version of iOS is intended only for installation on devices registered with Apple's developer program. Attempting to install this version of iOS in an unauthorized manner could put your device in an unusable state.

For more information and additional support resources, visit:

http://developer.apple.com/programs/ios/

Bug Reporting

Please report any bugs not mentioned in the “Notes and Known Issues” section using the Apple Bug Reporter on the Apple Developer website (http://developer.apple.com/bugreporter/). Additionally, you may discuss these issues and iOS SDK 5.0 in the Apple Developer Forums: http://devforums.apple.com. You can also access more information about iCloud Beta for Developers at: http://developer.apple.com/icloud

Notes and Known Issues

The following issues relate to using the 5.0 SDK to develop code.

Accessories
NEW: In this beta, Nike + Gym will be unable to save workout data and upload it to Nike. And iPod accessories that do radio tagging will be unable to save and sync tags.
Accounts
When creating an iCloud account you can use any Apple ID provided as long as it is a full email address and not a MobileMe account. If you have a MobileMe account, you can copy data from that account to an iCloud account to use during testing. You can find more information on iCloud at: http://developer.apple.com/icloud
When setting up an iCloud or MobileMe account using the setup assistant and leaving Find My iPhone on, it might actually turn Find my iPhone off after the setup. Please verify in Settings/Mail, Contacts, Calendar/YourAccount that Find my iPhone is toggled On after leaving the setup assistant.
It is recommended that you disable Bookmarks on multiple accounts. If they are enabled, the results might be undefined.
FIXED: In this beta the option of “Choosing a security question” is not working during an iCloud account setup.
AirPlay
Starting in iOS 5, video content in applications and websites are AirPlay-enabled by default.
iOS 5 supports AirPlay of video via AV Foundation.
Switching into AirPay Video while using mirroring will leave the screen black but the video is still playing.
Apple TV
Apple TV Software beta enables users to mirror the contents of an iPad 2 to an Apple TV (2nd generation) using AirPlay. This beta software also enables Photo Stream on Apple TV so users can access photos stored in iCloud. Apple TV Software beta is being provided to test the latest AirPlay functionality with your iOS 5 apps and web sites. If you wish to install Apple TV Software beta on your device, you must first register your device UDID in the iOS Developer Program Portal.
There is no new build for AppleTV for beta 4. Please continue using the build provided with beta 3.
Audio
Using voice chat in iOS 5 requires setting the kAudioSessionMode_VoiceChat mode on the Audio Session, or setting the AVAudioSessionModeVoiceChat mode on the AVAudioSession object.
Binary Compatibility
NEW: In this beta, the BBC iPlayer website and apps will be unable to play content on the device.
Calendar
All MobileMe calendars were duplicated after turning calendar syncing off and back on.
FIXED: Restoring from a Seed 1 backup or earlier will cause MobileMe/iCloud calendars not to sync. Subscribed calendars will show up in Calendars but none of your event calendars will appear in MobileCal. To workaround the problem please remove and re-add the account.
If SnowLeopard isn't syncing your calendars on iOS device and you created a calendar or reminders list using a previous iOS 5.0 seed, change the name of that calendar or list on the iOS device and then let it sync.
In this beta Birthday calendar is temporarily disabled for Web apps and Windows and will be available in a future release.
Contacts
NEW:In MobileMe local contacts are deleted instead of be being merged.
In this beta Import/Export vCard is disabled from Action menu and will be available in future release.
GameKit
Match data for turn based matches is currently limited to 4 KB of data.
When both Wifi and 3G are disabled (i.e. in Airplane mode) sometimes GameKit can cause the connection in a local Bluetooth match to fail.
iBooks
iBooks 1.2.2 may fail to display some text or images in books. Please update to iBooks 1.3 in the App Store.
iCloud Backup
As this is beta software, it is recommended that you do not use the iCloud services to store any critical data or information. If you enable iCloud Backup, automatic backup with iTunes when syncing will be disabled. We suggest you also manually back up your device with iTunes. It is strongly advised you upgrade to this version of the iOS 5 beta in order to continue backing up your devices and preserve previous backups.
iCloud Storage
During the iOS 5 beta period, any documents stored on the servers might be purged periodically before GM. Therefore, it is highly recommended that you do not store any critical documents or information on the servers.
If your application is using the NSMetadataQuery class, you must set a predicate, even though the predicate itself is ignored.
The Foundation framework doesn't include the team ID when looking for an app's mobile documents container. The Team ID must be included at the beginning of the identifier string passed to the URLForUbiquityContainerIdentifier: method.
In this beta, the setSortDescriptors: method of NSMetadataQuery is not supported.
In this beta, if you want to use iCloud, you have to manually specify various container identifiers (your application’s Display set) within an Entitlements file for both of your Mac OS X and iOS projects.
There are issues using the Cloud Storage document API in conjunction with protected data which can lead to data corruption.
In this beta, document-based applications cannot always detect when files change, move, or are deleted out from underneath them.
NEW: In this beta, file presenters (objects that adopt the NSFilePresenter protocol) do not receive some of the messages that they're supposed to receive, especially:
presentedItemDidChange
presentedSubitemDidAppearAtURL:
presentedSubitemDidChangeAtURL:
You can workaround this by implementing the relinquishPresentedItemToWriter: method and checking to see if the writer actually wrote when your file presenter reacquires. You can also use FSEvents to observe file system changes
In this beta, messages about changes to files in a directory are not getting delivered to objects that adopt the NSFilePresenter protocol.
While reporting a bug related to the iCloud storage interfaces, please include the logs collected during your debugging session. To generate these logs, you must install a special debug profile on your device.
The debug profile can be obtained from http://connect.apple.com. This profile enables the generation of debug logs that are needed to diagnose any problems using iCloud storage. The instructions to collect the logs are:

Install the profile. (The easiest way to do this is to mail it to yourself and open the attachment on their device.)
Reproduce the bug.
Sync with iTunes to pull the logs off your device.
Attach the logs to your bug report. You can find the logs in ~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs.
These logs can grow large very quickly, so you should remove the profile after you have reproduced the problem and pulled the logs for the bug report.
NEW: File names in iCloud Storage are case sensitive.
iMessage
NEW: iMessage beta 1 will be unable to communicate with iMessage users on beta 2 or later.
iTunes
The version of iTunes that comes with beta 4 cannot sync devices that have the beta 2 software installed. To avoid this problem, do the following:
Sync any devices that have beta 3 installed to the version of iTunes that came with beta 4.
Upgrade iTunes to the version that comes with beta 4.
Connect the device and install the beta 4 software. (Understand that you might see a failure to sync error when you first connect the device.)
After installing the beta 4 software, restore from your the backup you made in step 1.
Videos purchased from the iTunes Store do not play on a 2nd generation AppleTV over AirPlay with iTunes 10.5.
Location
NEW:The startMonitoringSignificantLocationChanges method of CLLocationManager does not cause applications to be resumed or launched in the background for significant location change updates. However, if a backup from a previous software version (where an application was monitoring significant location changes) is restored to the device, significant location change monitoring will continue to cause that application to be resumed or launched in the background.
Mail
NEW:Forwarding a message with attachments included does not attach the file and the message compose screen does not change from "Loading...."
Music Library
NEW:Some songs are missing their album artwork after changing the device library via syncing.
OpenGL
NEW: In iOS 5.0 beta 4, several OpenGL extensions have been moved from the APPLE namespace to the EXT namespace, causing some API to be renamed. The altered extensions are EXT_color_buffer_half_float, EXT_occlusion_query_boolean, EXT_separate_shader_objects, EXT_shadow_samplers, EXT_texture_rg, EXT_debug_label, and EXT_debug_marker.
OTA Software Update
NEW: If you are doing a OTA software update from beta 3 to beta 4, you will need to re-sync your photos with iTunes."
Personal HotSpot
NEW:In this beta iPhone 4 device cannot join personal hotspot even if it is on due to a non functional WiFi tethering on these devices.
Photo Adjustments
If you apply red-eye adjustments in iOS, and import your image into the iPhoto seed build, the red-eye adjustments will not appear on that image in iPhoto. As a result, subsequent syncing of your image back to the iOS device from iPhoto will not show the red-eye adjustments.
Settings
FIXED: In this beta FaceTime icon is missing in Settings on the iPhones.
Simulator
NEW: Location services are not functional in iOS 4.3 simulator running on Mac OS 10.7 with Xcode 4.2.
Springboard
Push and local notifications for apps appear in the new Notification Center in iOS 5. Notification Center displays notifications that are considered "unread.” In order to accommodate push and local notifications that have no "unread" status, developers can use their application badge count to trigger a clearing of notifications from Notification Center. When an application clears its badge count (by setting it to zero), iOS 5 will clear its notifications from Notification Center.
NEW: iOS 5.0 terminates VoIP applications that are resumed in the background for incoming network traffic with extreme frequency. Developers are encouraged to make sure all incoming data is read from VoIP sockets to avoid this condition.
Twitter
NEW: When tweeting your location from Safari and exiting before the location can be established, the location arrow will stay in the status bar. The arrow can be removed by killing Safari from the task switcher.
UI Automation
NEW: Instruments overwrites the loaded automation script, even if another program is editing it.
The play and record buttons in the Automation instrument script editor may not work properly after targeting an application that was launched by a trace session and has ended. They may also not work if you target an application that was suspended. If you run into this problem and it persists, you may need to close and reopen the trace document to get back into a functional state.
When capturing actions into a script using the Automation instrument, interfaces with web views or table cells that contain a high number of off screen elements may take an extremely long time before returning with an expression.
The lock() and unlock() functions of UIATarget have been replaced with the lockForDuration(<seconds>) function.
FIXED:Instruments overwrites the loaded automation script, even if another program is editing it.
Starting in iOS 5 beta 2, you can now trigger the execution of an UI Automation script on an iOS device from the host terminal by using the instruments tool. The command is:
instruments -w <device id> -t <template> <application>
When using the cli instruments for UI Automation you can now target the default Automation Template and pass the script and results path into the tool as environment variable options. For example:
instruments -w <device id> -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate <application> -e UIASCRIPT <script> -e UIARESULTSPATH <results path>
UIKit
Starting in iOS 5 beta 3, the exclusiveTouch property of UIControl has returned to its original default value of NO.
Returning nil from the tableView:viewForHeaderInSection: method (or its footer equivalent) is no longer sufficient to hide a header. You must override tableView:heightForHeaderInSection: and return 0.0 to hide a header.
In the iOS 5 beta, the UITableView class has two methods to move one cell from one row to another with defined parameters. These APIs are:
moveSection:toSection:
moveRowAtIndexPath:toIndexPath:
Using the UIWebView class in Interface Builder, setting transparent background color is possible in iOS 5. Developers compiling against the new SDK can check their XIB for the UIWebView transparent setting.
In the iOS 5 beta, the UINavigationBar, UIToolbar, and UITabBar implementations have changed so that the drawRect: method is not called on instances of these classes unless it is implemented in a subclass. Apps that have re-implemented drawRect: in a category on any of these classes will find that the drawRect: method isn't called. UIKit does link-checking to keep the method from being called in apps linked before iOS 5 but does not support this design on iOS 5 or later. Apps can either:
Use the customization API for bars that in iOS 5 and later, which is the preferred way.
Subclass UINavigationBar (or the other bar classes) and override drawRect: in the subclass.
The indexPathForRow:inSection:, section, and row methods of NSIndexPath now use NSInteger instead of NSUInteger, so that these types match with methods defined on UITableView.
Touch events are not getting forwarded to the view in the cameraOverlayView property of UIImagePickerController.
FIXED:When creating a new appointment in calendar app on a device using 24 hr clock, you cannot select an hour value greater than 12. The date-time picker value sets current weekday to be the same as previous day (e.g: a An appointment on Tuesday will be set as Monday).
We have changed the behavior of scrollToRowAtIndexPath:atScrollPosition:animated: such that UITableViewScrollPositionTop and UITableViewScrollPositionBottom now adjust for the top and bottom portions of the contentInset property.
WebKit
In iOS 5, a new inherited CSS property, -webkit-overflow-scrolling, is available. The value touch allows the web developer to opt in to native-style scrolling in an overflow:scroll element. The default value for this property is auto, which allows single-finger scrolling without momentum.
The WebKit framework has picked up a newer WebKit engine, which closely matches Safari 5.1. Some areas to be aware of with the new WebKit framework on iOS:
There is a new HTML5-compliant parser.
Text layout width may change slightly because word-rounding behavior now has floating-point-based precision.
There is improved validation of the <input type=number> form field, which includes removing leading zeros and number formatting.
Touch events are now supported on input fields.
window.onerror is now supported.
There is a new user agent that does not have locale information in the User Agent string.
WiFi Syncing
In iOS 5 beta 4, wireless syncing is now available on Windows as well as the Mac (requires OS X 10.6.8 or Lion)You will see an option to enable wireless syncing when you connect your device to iTunes with the USB cable. It is recommended you perform your initial sync with a cable after restoring your device.
Wireless syncing is triggered automatically when the device is connected to power and on the same network as the paired computer. Or, you can manually trigger a sync from iTunes or from Settings -> General -> iTunes Sync (same network as paired computer required).
If you find issues with apps, media and/or photos synced to your device, you can reset then resync. From Settings -> General -> Reset, choose Erase all Content and Settings. Then reconnect to iTunes and sync again.
In some cases, your device may fail to sync contacts, calendars and account settings, or back up to iTunes. If this happens, reboot your device and re-sync.
NEW:In some cases, syncing photos may result in only thumbnails on your device. If this happens, unsync Photos then re-sync again.
Xcode
In this beta, device restores using Xcode are disabled. Please use iTunes only to back up and restore your device.
In some cases, Xcode 4.2 Organizer does not display a device that is in restore mode. As a workaround you can use iTunes to restore.
In iOS 5 beta 4, the iOS Simulator is not compatible with previous releases of the iCloud Developer Seed for OS X. It is highly recommended that you update to the latest iCloud Developer Seed to ensure compatibility.
iOS 5.0 SDK supports both iOS 4.3 and iOS 5.0 simulators.

다시금 짧은시간에 beta3 가 공개 되었다.

들리는 소문에 의하면 8월에 모든 베타가 종료되고 정식 공개전 마무리 한다는 소문이 있지만

이왕 아이폰에 얹은거.. 다른 프로젝트 중이지만 일단 쭉 베타버전은 얹어 본다..

> beta3 공개를 알리는 메일내용~

Apple Developer
iOS 5 beta 3 now available
.
iOS 5 beta 3 and Xcode 4.2 with iOS 5 SDK beta 3 are now available on the iOS Dev Center. Download these new releases today and start developing your apps to take advantage of iCloud Storage, Newsstand Kit, Core Image, GLKit, Twitter, and new Game Center APIs.

.
> 베타3 다운로드 화면 (iOS5 beta 외에 아이튠즈 beta 등등이 업데이트 되었다)





> beta3 릴리즈 노트
iOS SDK Release Notes for iOS 5.0 beta 3


Important: This is a preliminary document for an API or technology in development. Although this document has been reviewed for technical accuracy, it is not final. Apple is supplying this information to help you plan for the adoption of the technologies and programming interfaces described herein. This information is subject to change, and software implemented according to this document should be tested with final operating system software and final documentation. Newer versions of this document may be provided with future seeds of the API or technology.

 
Contents:

Introduction
Bug Reporting
Notes and Known Issues

 

Introduction

iOS SDK 5.0 provides support for developing iOS applications and includes the complete set of Xcode tools, compilers, and frameworks for creating applications for iOS and Mac OS X. These tools include the Xcode IDE and the Instruments analysis tool among many others.

With this software you can develop applications that run on iPhone, iPad, or iPod touch running iOS 5.0. You can also test your applications using the included iOS Simulator, which supports iOS 5.0. There are two Xcode iOS SDK 5.0 images, one for installing on a Macintosh computer running Mac OS X 10.6.7 (Snow Leopard) or later, the other for installing on a Macintosh computer running Mac OS X 10.7 (Lion).

This version of iOS is intended only for installation on devices registered with Apple's developer program. Attempting to install this version of iOS in an unauthorized manner could put your device in an unusable state.

For more information and additional support resources, visit:

http://developer.apple.com/programs/ios/

Bug Reporting

Please report any bugs not mentioned in the “Notes and Known Issues” section using the Apple Bug Reporter on the Apple Developer website (http://developer.apple.com/bugreporter/). Additionally, you may discuss these issues and iOS SDK 5.0 in the Apple Developer Forums: http://devforums.apple.com. You can also access more information about iCloud Beta for Developers at: http://developer.apple.com/icloud

Notes and Known Issues

The following issues relate to using the 5.0 SDK to develop code.

Accounts

When creating an iCloud account you can use any Apple ID provided it is a full email address and not a MobileMe account. If you have a MobileMe account, you can copy data from that account to an iCloud account to use during testing. You can find more information on iCloud at: http://developer.apple.com/icloud


When setting up an iCloud or MobileMe account using the setup assistant and leaving Find My iPhone on, it might actually turn Find my iPhone off after the setup. Please verify in Settings/Mail, Contacts, Calendar/YourAccount that Find my iPhone is toggled On after leaving the setup assistant.


There is a problem finding a device using Find My iPhone on the MobileMe website (www.me.com) when switching from iCloud back to MobileMe. To workaround this issue:

On the device go to Settings->Mail, Contacts, Calendar-><your_account>@me.com and Toggle Find My iPhone off and back on. Now the device should show up on MobileMe website.

 

It is recommended that you disable Bookmarks on multiple accounts. If they are enabled, the results might be undefined.


NEW: In this beta the option of “Choosing a security question” is not working during an iCloud account setup.


AirPlay

Starting in iOS 5, video content in applications and websites are AirPlay-enabled by default.


iOS 5 supports AirPlay of video via AV Foundation.


FIXED: The Apple TV screen saver may degrade mirroring performance over AirPlay. The screen saver can be disabled in Apple TV settings.


Apple TV

Apple TV Software beta enables users to mirror the contents of an iPad 2 to an Apple TV (2nd generation) using AirPlay. This beta software also enables Photo Stream on Apple TV so users can access photos stored in iCloud. Apple TV Software beta is being provided to test the latest AirPlay functionality with your iOS 5 apps and web sites. If you wish to install Apple TV Software beta on your device, you must first register your device UDID in the iOS Developer Program Portal.


Audio

Using voice chat in iOS 5 requires setting the kAudioSessionMode_VoiceChat mode on the Audio Session, or setting the AVAudioSessionModeVoiceChat mode on the AVAudioSession object.


CalDav

FIXED: After creating a recurring event locally on the device, the device stops syncing after hitting an error on merge. Removing and re-adding the account acts as a workaround for this.


Calendar

All MobileMe calendars were duplicated after turning calendar syncing off and back on.


If you launch or manually refresh Calendars on an iPad, your calendars might disappear and you will have to tap "Show All Calendars" to display them again.


NEW: Restoring from a Seed 1 backup or earlier will cause MobileMe/iCloud calendars not to sync. Subscribed calendars will show up in Calendars but none of your event calendars will appear in MobileCal. To workaround the problem please remove and re-add the account.


GameKit

Match data for turn based matches is currently limited to 4 KB of data.


GameCenter

If you have an existing Game Center account which has not yet gone through the first-time Game Center flow in iOS 5, you will encounter a crash when signing into a game's login alert directly. The workaround for this is to launch Game Center to complete the first-time flow.


iBooks

iBooks 1.2.2 may fail to display some text or images in books. Please update to iBooks 1.3 in the App Store.


iCloud Backup

As this is beta software, it is recommended that you do not use the iCloud services to store any critical data or information. If you enable iCloud Backup, automatic backup with iTunes when syncing will be disabled. We suggest you also manually back up your device with iTunes.


In the iOS 5 beta, support for data protection in iCloud Backup is unavailable. Apps that have protected files will not have any of their data or metadata backed up as a result.


After restoring, you may not be able to back up again because the device still thinks it's restoring. To workaround this issue try syncing apps or media that are missing form iTunes or try deleting your iCloud account and adding it back.


If you delete your backup, the feature will be disabled but settings may still indicate that it is enabled and you will have to toggle the BackUp to Cloud switch in Settings.


For compatibility reasons, this version of the iOS 5 beta requires that all files be backed up again, instead of only those files that have changed since your last backup. This may cause a warning that your account is over quota. In case the warning occurs, you can delete your oldest backup to free up space and then initiate a backup.


iCloud Storage

During the iOS 5 beta period, any documents stored on the servers might be purged periodically before GM. Therefore, it is highly recommended that you do not store any critical documents or information on the servers.


If your application is using the NSMetadataQuery class, you must set a predicate, even though the predicate itself is ignored.


The Foundation framework doesn't include the team ID when looking for an app's mobile documents container. The Team ID must be included at the beginning of the identifier string passed to the URLForUbiquityContainerIdentifier: method.


In this beta, the setSortDescriptors: method of NSMetadataQuery is not supported.


In this beta, if you want to use iCloud, you have to manually specify various container identifiers (your application’s Display set) within an Entitlements file for both of your Mac OS X and iOS projects.


There are issues using the Cloud Storage document API in conjunction with protected data which can lead to data corruption.


In this beta, document-based applications cannot always detect when files change, move, or are deleted out from underneath them.


NEW: In this beta, file presenters (objects that adopt the NSFilePresenter protocol) do not receive some of the messages that they're supposed to receive, especially:

presentedItemDidChange


presentedSubitemDidAppearAtURL:


presentedSubitemDidChangeAtURL:


You can workaround this by implementing the relinquishPresentedItemToWriter: method and checking to see if the writer actually wrote when your file presenter reacquires. You can also use FSEvents to observe file system changes


In this beta, messages about changes to files in a directory are not getting delivered to objects that adopt the NSFilePresenter protocol.


While reporting a bug related to the iCloud storage interfaces, please include the logs collected during your debugging session. To generate these logs, you must install a special debug profile on your device.

The debug profile can be obtained from http://connect.apple.com. This profile enables the generation of debug logs that are needed to diagnose any problems using iCloud storage. The instructions to collect the logs are:
1.
Install the profile. (The easiest way to do this is to mail it to yourself and open the attachment on their device.)

2.
Reproduce the bug.

3.
Sync with iTunes to pull the logs off your device.

4.
Attach the logs to your bug report. You can find the logs in ~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs.


These logs can grow large very quickly, so you should remove the profile after you have reproduced the problem and pulled the logs for the bug report.


iMessage

NEW: iMessage beta 3 will be unable to communicate with iMessage users on beta 1. It works between beta 3 and beta 2.


NEW: Modal alerts don’t appear for iMessages.


iTunes

The version of iTunes that comes with beta 3 cannot sync devices that have the beta 2 software installed. To avoid this problem, do the following:
1.
Sync any devices that have beta 2 installed to the version of iTunes that came with beta 2.

2.
Upgrade iTunes to the version that comes with beta 3.

3.
Connect the device and install the beta 3 software. (Understand that you might see a failure to sync error when you first connect the device.)

4.
After installing the beta 3 software, restore from your the backup you made in step 1.

 

Videos purchased from the iTunes Store do not play on a 2nd generation AppleTV over AirPlay with iTunes 10.5.


MMS

Sending an MMS of large videos does not work.


Photo Adjustments

If you apply red-eye adjustments in iOS, and import your image into the iPhoto seed build, the red-eye adjustments will not appear on that image in iPhoto. As a result, subsequent syncing of your image back to the iOS device from iPhoto will not show the red-eye adjustments.


Reminders

FIXED: The Reminders application does not send notifications for reminders that are based upon the entry (and/or exit) of a location if there is no date associated with the reminder.

Settings

The “Back Up Now” button is enabled without the backup data class being enabled for the account.


FIXED: If you bring up the keyboard of the terms in Settings->General->Software Update, you cannot dismiss it. You have to force quit Settings to get out.


NEW: In this beta FaceTime icon is missing in Settings on the iPhones.


Simulator

NEW: Location services are not functional in iOS 4.3 simulator running on Mac OS 10.7 with Xcode 4.2.


Springboard

Push and local notifications for apps appear in the new Notification Center in iOS 5. Notification Center displays notifications that are considered "unread". In order to accommodate push and local notifications that have no "unread" status, developers can use their application badge count to trigger a clearing of notifications from Notification Center. When an application clears its badge count (by setting it to zero), iOS 5 will clear its notifications from Notification Center.


Twitter

NEW: When tweeting your location from Safari and exiting before the location can be established, the location arrow will stay in the status bar. The arrow can be removed by killing Safari from the task switcher.


UI Automation

NEW: In iOS 5 beta 3, the first execution of a script after a reboot or erase install will likely fail. Subsequent attempts should succeed until the device is rebooted again.


The play and record buttons in the Automation instrument script editor may not work properly after targeting an application that was launched by a trace session and has ended. They may also not work if you target an application that was suspended. If you run into this problem and it persists, you may need to close and reopen the trace document to get back into a functional state.


When capturing actions into a script using the Automation instrument, interfaces with web views or table cells that contain a high number of off screen elements may take an extremely long time before returning with an expression.


The lock() and unlock() functions of UIATarget have been replaced with the lockForDuration(<seconds>) function.


Instruments overwrites the loaded automation script, even if another program is editing it.


Starting iOS 5 beta 2, you can now trigger the execution of an UI Automation script on an iOS device from the host terminal by using the instruments tool. The command is:

instruments -w <device id> -t <template> <application>

 

UIKit

NEW: Starting in iOS 5 beta 3, the exclusiveTouch property of UIControl has returned to its original default value of NO.


Returning nil from the tableView:viewForHeaderInSection: method (or its footer equivalent) is no longer sufficient to hide a header. You must override tableView:heightForHeaderInSection: and return 0.0 to hide a header.


In the iOS 5 beta, the UITableView class has two methods to move one cell from one row to another with defined parameters. These APIs are:

moveSection:toSection:


moveRowAtIndexPath:toIndexPath:

 

Using the UIWebView class in Interface Builder, setting transparent background color is possible in iOS 5. Developers compiling against the new SDK can check their XIB for the UIWebView transparent setting.


In the iOS 5 beta, the UINavigationBar, UIToolbar, and UITabBar implementations have changed so that the drawRect: method is not called on instances of these classes unless it is implemented in a subclass. Apps that have re-implemented drawRect: in a category on any of these classes will find that the drawRect: method isn't called. UIKit does link-checking to keep the method from being called in apps linked before iOS 5 but does not support this design on iOS 5 or later. Apps can either:

Use the customization API for bars that in iOS 5 and later, which is the preferred way.


Subclass UINavigationBar (or the other bar classes) and override drawRect: in the subclass.

 

The indexPathForRow:inSection:, section, and row methods of NSIndexPath now use NSInteger instead of NSUInteger, so that these types match with methods defined on UITableView.


There is a known issue with presenting a UIVideoEditorControllerobject where it doesn't show the selected video, which appears blank instead. In certain cases it may also crash.


Touch events are not getting forwarded to the view in the cameraOverlayView property of UIImagePickerController.


The imagePickerController:didFinishPickingMediaWithInfo: method of UIImagePickerController is not returning a URL to the video when recording is complete.


NEW: When creating a new appointment in calendar app on a device using 24 hr clock, you cannot select an hour value greater than 12. The date-time picker value sets current weekday to be the same as previous day (e.g: a An appointment on Tuesday will be set as Monday).


FIXED: We have changed the behavior of scrollToRowAtIndexPath:atScrollPosition:animated: such that UITableViewScrollPositionTop and UITableViewScrollPositionBottom now adjust for the top and bottom portions of the contentInset property.


WebKit

NEW: In iOS 5 beta 2, a new inherited CSS property, -webkit-overflow-scrolling: value, is available. The value touch allows the web developer to opt in to native-style scrolling in an overflow:scroll element. The default value for this property is auto.


The WebKit framework has picked up a newer WebKit engine, which closely matches Safari 5.1. Some areas to be aware of with the new WebKit framework on iOS:

There is a new HTML5-compliant parser.


Text layout width may change slightly because word-rounding behavior now has floating-point-based precision.


There is improved validation of the <input type=number> form field, which includes removing leading zeros and number formatting.


Touch events are now supported on input fields.


window.onerror is now supported.


There is a new user agent that does not have locale information in the User Agent string.

 

WiFi Syncing

In iOS 5 beta 2, wireless syncing is available for the Mac. It requires iTunes 10.5 beta 2 and OS X 10.6.8 or Lion. You will see an option to enable wireless syncing when you connect your device to iTunes with the USB cable. It is recommended you perform your initial sync with a cable after restoring your device.

Wireless syncing is triggered automatically when the device is connected to power and on the same network as the paired computer. Or, you can manually trigger a sync from iTunes or from Settings -> General -> iTunes Sync (same network as paired computer required). Be sure your device is plugged into a power source when performing wireless syncs.


If you find issues with apps, media and/or photos synced to your device, you can reset then resync. From Settings -> General -> Reset, choose Erase all Content and Settings. Then reconnect to iTunes and sync again.

 

FIXED: In this beta, iTunes may incorrectly report Photos as "Other" in the capacity bar. Photo syncing otherwise works as expected.


NEW:In some cases, your device may fail to sync contacts, calendars and account settings, or back up to iTunes. If this happens, reboot your device and re-sync.


NEW:In some cases, syncing photos may result in only thumbnails on your device. If this happens, unsync Photos then re-sync again.


Xcode

In this beta, device restores using XCode are disabled. Please use iTunes only to back up and restore your device.


In some cases, Xcode 4.2 Organizer does not display a device that is in restore mode. As a workaround you can use iTunes to restore.


FIXED: On some desktop machines, Xcode's memory usage inflates incredibly fast while restoring a device or copying an IPSW. As a workaround use iTunes to restore.


FIXED: In this beta, crash logs (either unsymbolicated or symbolicated) do not appear in Xcode Organizer. To make them appear in the Xcode Organizer, you will have to rename the device.

 In iOS 5 beta 2, the iOS Simulator is not compatible with previous releases of the iCloud Developer Seed for OS X. It is highly recommended that you update to the latest iCloud Developer Seed to ensure compatibility.


iOS 5.0 SDK supports both iOS 4.3 and iOS 5.0 simulators.

주말에 iOS 5.0 으로 내 아이폰을 업그레이드 해보았다.
설치 한뒤 소감은 제법 괜찮은 기능들이 들어가 있지만 역시 베타는 베타 일뿐.
안정적인 기존 4점대 버전을 사용하기를 강력 추천한다~

[설치방법]

준비물 : Mac 컴퓨터, iOS 5.0 beta ipsw (바로이전에 포스탕한 내용에 보면 각 디바이스별로 다운가능 dmg 받고 풀면 됨), 애플 개발자 계정, 업그레이드할 iOS 디바이스 (일단 테스트 기기로 등록된 기기만가능), xcode, iTuns 10.5 beta

1 . 모든 준비물이 갖춰졌다면~ xcode 를 실행.
 

2. 시작 메뉴에서 아무거나 골라도 되지만 맨위에있는 Create New xcode project 를 선택.

3. 새프로젝트를 선택하면 처음에 템플릿 선택창이 뜨는데, 이건그냥 무시하고 위에 메뉴중에 Window > Organizer 를 클릭~!.


4. 이미 테스트기기로 등록 했다면, 케이블로 디바이스를 맥에 연결하면 아래와 같은 화면을 확인할수 있다.

5. Software Version 에 선택바를선택하여 other file 인가? 선택을하면 ipsw 파일을 불러올수 있다. 이때 받아둔 디바이스용 5.0 파일을 선택 해주면 그냥 쭉 업데이트가 진행된다.

[주의점]
- 위의 내용은 iphone 3GS만 가지고 해본 거라 모든 디바이스에 실제로 해보진 않았지만 다 똑같을거라 예상됨;;; (책임회피)
- 일단 업데이트 되면 기존에 iTuns 로는 기기 인식이 안됨.
- 4 점대로의 복구.. 시도해보진 않았지만 일단은 안된다고 알려짐(물론 가능한 방법이 있다는~!! 4.3대 ipsw를 구해서 그거로 위와 같은 방식대로 restore 한다거나 하는등의 방법)
- 일단은 베타인터라 버벅대는게 제법 많이 느껴짐.
- 그냥 기존에 4점대 버전 사용하기를 추천 -ㅅ-;;;



iOS 4.2 버전이 업데이트 되었다.
타 스마트폰의 말도 많은 업데이트 걱정은 없으니 행복한건가 ㅋ

이번업데이트는 역시 국내 상륙한 아이패드가 많은 기능이 적용되었다.


[iOS 4.2 업데이트]

iPad에서도 멀티태스킹

iOS 4.2는 iPhone과 iPod touch의 멀티태스킹을 iPad에서도 가능하게 만들어주었습니다.1 더 능률적으로 일하고, 더 재미있게 즐기고, 때론 이 두 가지를 동시에 해보세요. 모든 게 매끄럽고 효율적으로 진행되므로 실행 중인 App이 느려지거나 배터리가 불필요하게 소모되는 일이 없습니다.

iPad에서도 폴더로
정리하세요.

이제 iPad에도 Apps를 더 많이 넣을 수 있습니다. Apps를 폴더로 끌어다 놓기만 하면 홈 화면을 깔끔하게 정리하고 Apps를 정리된 상태로 유지하여 좋아하는 App에 빠르게 접근할 수 있습니다.

AirPrint

AirPrint를 사용하면 이메일, 사진, 웹페이지, 그리고 문서도 iPhone, iPad, iPod touch에서 바로 프린트할 수 있습니다. 몇 번만 터치하면 화면에서 보던 내용을 프린트물로 볼 수 있습니다. 소프트웨어를 내려받거나, 드라이버를 설치하거나, 케이블을 연결할 필요가 없습니다.

살다 : 현재는 HP사의 10개의 프린터만 연결된다고 한다. 추후 다른 프린터들도 추가 예정이라는;;

iOS 4.2의 다양한 기능

더욱 훌륭해진 Mail

모든 계정의 메시지를 하나로 통합된 받은 편지함에서 보고, 메시지를 주고받은 순서에 따라 정리하고, 첨부 파일을 타사 Apps에서도 열어볼 수 있습니다.

웹페이지 문장 검색

Safari에서 내용이 무척 많은 웹페이지를 볼 때에도 빠른 문장 검색 기능으로 특정 단어나 어구를 바로 찾아볼 수 있습니다.

다양해진 메모 서체

Marker Felt, Helvetica, Chalkboard 등 다양한 영문 서체를 사용하여 메모할 수 있습니다.

캘린더 초대 응답하기

iPad에 내장된 캘린더 App에서 Yahoo!, Google, Microsoft Exchange 같은 캘린더 서비스를 이용해 친구의 이벤트 초대에 바로 응답할 수 있습니다.

더 똑똑해진 키보드와사전

iOS 4.2는 50가지가 넘는 언어 및 지역어를 지원하며, iPad를 위한 30가지 이상의 새로운 다국적 키보드와 사전이 포함되어 있습니다.

더 강화된 손쉬운 사용기능

무선 키보드로도 VoiceOver를 조정할 수 있습니다. 30가지가 넘는 Bluetooth 무선 점자 디스플레이를 지원하며 25가지 이상의 언어에 대한 국제 점자표도 내장되어 있습니다.

살다 : 보이스오버 흠.. 써봤지만 진짜 해도 인식율이 안습이라는.. 그만큼 한글이 대단한건가?

훨씬 향상된 기업 지원

보안 기능이 더 강화되었고, 새로운 기기 관리 기능이 추가되었으며, 엔터프라이즈 통합 역시 향상되었습니다.

소리로 구분되는 문자
메시지

화면을 보지 않아도 문자 메시지를 누가 보냈는지 알 수 있습니다. 17가지의 새로운 알림 사운드를 연락처에 등록된 사람들에게 적용해보세요.(아이폰만적용)

Stoyan Stefanov씨는 아이폰/아이팟 터치에서 제공하는 사파리 브라우저(이하 모바일 사파리)용 웹페이지를 구축할 때 알아두면 유용한 팁 12가지를 작성했습니다. 아시다시피 모바일 사파리는 데스크탑용 브라우저와 견주어도 손색없을 정도의 풀브라우징을 지원하며, 작은 화면에서 효과적으로 컨텐츠를 조작 및 조회할 수 있도록 추가적인 특수한 API를 제공하고 있습니다. 지금부터 소개할 12가지 팁과 트릭은 기존의 사이트를 모바일 사파리에 최적화하거나, 새롭게 구축할 때 유용하게 사용할 수 있을 것입니다.

1. 관련 문서와 아이폰 시뮬레이터

Peter-Paul Koch씨는 모바일 사파리를 가지고 연구하기 시작했을 무렵에는 그 어디에도 관련 개발 문서를 찾을수 없었다고 불평했습니다. 애플은 한참이 지나서야 모바일 사파리 브라우저의 명세인 iPhone-specific web development information 문서를 공개했습니다.

모바일 사파리용 웹사이트를 만들기 위해서 아이폰이나 아이팟 터치를 꼭 가지고 있어야 하는 것은 아닙니다. 아이폰 SDK(맥 버전만 제공됨)에서 제공하는 시뮬레이터로도 테스트 할 수 있으니까요. 이것을 설치하기 위해서는 애플측에 아이폰 개발자로 등록절차를 거친 후 SDK를 다운로드해야 합니다. 설치에 성공했다면 아래의 경로에서 아이폰 시뮬레이터를 찾을 수 있습니다.
/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications

2. 작은 화면용 CSS

PC 또는 맥과 아이폰의 분명한 차이점은 아이폰이 훨씬 작은 화면을 가지고 있다는 점입니다. 만약 이미 데스크탑 브라우저에서 잘 작동하는 웹사이트가 있다면 모바일 사파리로의 가장 간단한 최적화 방법은 아래와 같은 전용 스타일시트를 추가하는 것입니다.
<!--[if !IE]>-->
<link  
   rel="stylesheet"  
   href="small-screen.css"  
   type="text/css"  
   media="only screen and (max-device-width: 480px)"  
/>
<!--<![endif]-->

<link> 요소는 최대 너비가 480픽셀인 기기를 타깃으로 지정한 media query를 사용하여 스타일시트를 로드합니다. 이 크기는 아이폰을 가로로 보았을 때의 크기입니다. IE 조건부 코멘트는 IE 버전 5.5 또는 이하 버전이 여기에 해당하며 이 브라우저들은 media query를 지원하지 않기 때문에 우회하도록 하기 위한 것입니다. 몇가지 예제를 살펴봅시다.

예제 1에는 두가지 색상을 가진 박스가 작성되어 있습니다. 하나는 빨간색 박스이고 다른하나는 파란색 박스입니다. common.css에는 모든 브라우저를 위한 파란색 박스 스타일이 포함되어 있습니다. small-screen.css는 모바일 사파리에만 적용되는 빨간색 박스 스타일이 포함되어 있습니다. 예제를 아이폰에서 실행하면 빨간색 박스를 볼 수 있고 데스크탑에서는 파란색 박스를 볼 수 있을 것입니다.

만약 하나의 스타일시트만 사용하고 싶다면, 아래와 같이 @media 블럭을 사용하여 아이폰만을 위한 스타일을 추가 할 수 있습니다.
@media only screen and (max-device-width: 480px) {
  #test-block { 
    background: red;
  }
}

예제 2에서는 인라인 스타일 예제를 보여주고 있습니다. onestyleforall.css 스타일시트에서 @media 블럭 안에 박스의 배경을 빨간색으로 지정하는 코드를 발견할 수 있습니다.

3. 뷰포트 <meta> 요소

모바일 사파리는 기본으로 큰 화면을 가진 데스크탑 브라우저 처럼 페이지를 렌더링 합니다. 이를테면 너비가 980픽셀인 페이지를 작은 화면에 맞추기 위해서 컨텐츠의 스케일을 줄이고 있는 것입니다. 결과적으로 사용자에게는 아주 작고 읽기 어려운 문자들로 가득찬 페이지를 제공하게 되며 관심있는 부분을 보기 위해 확대해야 합니다. 웹페이지 자체에는 문제가 없어 보이지만 당신이 웹 애플리케이션을 설계하는 입장에서는 이러한 일을 받아들이기가 쉽지 않을 것입니다.

다행히도 이것은 아래와 같이 <meta> 요소에 viewport 속성을 사용하여 바로 잡을 수 있습니다.
<meta name="viewport" content="width=device-width" />

이는 너비가 980픽셀을 축소하여 그려지는 대신에 아이폰의 가로 크기를 사용할 수 있도록 합니다. 다음 두 예제를 통하여 직접 비교할 수 있습니다.

1. 예제 3에서는 <meta> 요소에 viewport 속성을 사용하지 않은 기본 단락입니다. 여기에 사용된 문자는 거의 보이지 않습니다.
2. 예제 4에서는 <meta> 요소에 viewport 속성을 포함하고 있습니다. 기기의 가로 크기는 320픽셀로 문자를 보기가 더욱 편해졌습니다.


또 다른 방법으로는 원하는 값으로 화면이 축소되도록 기기의 가로 크기를 device-width에 지정하는 것입니다. 예를 들어, 당신의 블로그가 800 x 600픽셀 화면에 맞는 가로 750픽셀 레이아웃으로 고정되어있다고 가정해 봅시다. 예제 5에서는 부가적인 빈공간을 없애기 위해, 화면영역 <meta>요소를 사용하여 가로 크기를 780픽셀로 지정하였습니다.
<meta name="viewport" content="width=780" />

예제 6에서는 이 <meta> 요소에 viewport 속성을 가진 고정 레이아웃을 볼 수 있습니다.

<meta> 요소의 viewport 속성 내용은 여러개의 콤마로 구분하여 기본 스케일 값, 줌 레벨, 스케일링 가능 여부 등을 기입할 수 있습니다. 일반적인 값들은 다음과 같습니다.
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />

모바일 사파리의 가로는 기기의 최대 가로 크기로 지정되었고 줌 레벨을 1로 지정하여 사용자가 컨텐츠를 확대/축소하는 것을 방지하고 있습니다. 마치 모바일 사파리에 최적화된 웹사이트처럼 보이게 할 수 있는 것이죠.

4. 기울기(Orientation) 변화

당신의 웹 페이지 또는 애플리케이션들은 아이폰의 기울기에 따라 세로형과 가로형 이 두가지 방향으로 모드를 전환해 가며 볼 수 있습니다. 모바일 사파리에서는 자바스크립트를 사용하여 window.orientation 프로퍼티에 접근 할 수 있으며 아래와 같은 값을 가지고 있습니다.

  • 0 : 일반적인 세로 화면(홈 버튼이 아래에 있음)
  • -90 : 시계 방향으로 회전된 가로 화면(홈 버튼이 좌측에 있음)
  • 90 : 시계 반대 방향으로 회전된 가로 화면(홈 버튼이 우측에 있음)
  • 180 : 180도 뒤집힌 화면(홈 버튼이 위에 있음)

사용자가 기기를 회전할 때 이벤트를 발생시키기 위해서 orientationchange를 사용할 수 있습니다. 다음은 가로/세로 방향이 변할때마다 alert을 실행하는 예제입니다.
window.onorientationchange = function() {
  alert(window.orientation);
}

예제 7에서는 위 코드가 어떻게 작동하는지 볼 수 있습니다. alert이 실행되기 위해서는 아이폰을 회전시켜야 합니다. 아이폰 시뮬레이터에서는 하드웨어 메뉴에서 기기를 회전하는 메뉴를 찾을 수 있습니다.



5. 스타일시트의 기울기 명세

기울기에 대하여 조금 더 알아봅시다. 때때로 방향에 따라서 컨텐츠가 가진 스타일을 별도로 지정할 필요가 있을 지도 모릅니다. 이를 위해서는 아래와 같은 세가지 간단한 단계가 필요합니다.

1. 마크업에서 <body> 요소에 클래스를 추가합니다.(예: portrait와 landscape)
2. 스타일시트에 body.portraitbody.landscape에 관련된 서로 다른 스타일을 지정합니다.
3. 자바스크립트를 사용하여 회전이 발생할때마다 <body> 요소의 클래스 값을 변경합니다.

첫번째 단계는 아래처럼 기본 클래스를 추가하는 것입니다.
<body class="portrait">

그리고 스타일을 추가 합니다.
body.portrait p {
   color: red;
}

body.landscape p {
   color: blue;
}

끝으로 다음과 같은 자바스크립트 코드들이 필요합니다.

1. 최초 클래스 이름을 정의하기 위한 'load' 이벤트 리스너 추가
2. 아이폰의 회전을 감지하기 위한 'orientationchange' 이벤트 리스너
3. 'orientationchange' 이벤트가 발생할때마다 클래스명을 바꿔주는 함수

아래 코드는 위 이벤트 리스너들 할당한 것입니다.
window.addEventListener('load', setOrientation, false);
window.addEventListener('orientationchange', setOrientation, false);

다음은 <body> 요소에 클래스명을 변경하기 위한 setOrientation 함수입니다.
function setOrientation() {
  var orient = Math.abs(window.orientation) === 90 ? 'landscape' : 'portrait';
  var cl = document.body.className;
  cl = cl.replace(/portrait|landscape/, orient);
  document.body.className = cl;
}

예제 8은 방향에 따라 지정된 스타일이 보여지고 있습니다.



6. 툴바 감추기

최초 모파일 사파리에 페이지가 로드되기 시작하면 URL 툴바가 보이고 페이지를 아래로 스크롤하면 URL 툴바는 사라지는 것을 알 수 있습니다.



만약 모바일 사파리에 최적화된 웹 애플리케이션을 만들고 싶다면 페이지 로드가 완료 된 후 곧장 툴바를 없애고 싶을 것입니다. 이 문제를 해결하기 위해서는 window.scrollTo메서드를 사용하여 1픽셀 아래로 페이지를 스크롤하여 해결할 수 있습니다.
window.addEventListener('load', function(){
  setTimeout(scrollTo, 0, 0, 1);
}, false);

예제 9는 아래처럼 보이게 됩니다.



페이지가 너무 짧아서 스크롤 할 내용이 없다면 어떻게 해야죠? 이럴땐 <meta>요소를 추가하세요. viewport 속성에 높이 값을 지정하여 페이지가 스크롤 될 수 있게 합니다.
<meta name="viewport" content="height=device-height,width=device-width" />

7. 둥근 모서리들

특정한 박스를 둥글게 만들어야 한다면 데스크탑용 브라우저에서 작업했던 방식으로 할 수도 있습니다. 하지만 단지 사파리 브라우저만을 위한 것이라면 -webkit-border-radius CSS속성을 사용할 수 있고 비슷한 방법으로 파이어폭스에서도 -moz-border-radius를 사용할 수 있습니다. 파이어폭스나 사파리에 border-radius CSS 속성을 사용하고 IE나 오페라일 때에는 보통 사각형으로 보이게 할 수도 있겠습니다.
.box {
   -webkit-border-radius: 5px;
   -moz-border-radius: 5px;
   background: #ddd;
   border: 1px solid #aaa;
}

예제 10번에서는 이 CSS속성들을 이용하여 <div>요소의 가장자리를 둥글게 만들었습니다.



8. 터치 이벤트

아이폰은 마우스가 아닌 손가락으로 제어합니다. 터치하고 탭하기 위해 여러개 손가락을 사용할 수도 있습니다. 아이폰에서는 마우스 이벤트 대신에 다음과 같은 터치 이벤트를 사용할 수 있습니다.

  • touchstart
  • touchend
  • touchmove
  • touchcancel (시스템이 터치한 것을 취소하는 경우)

위와 같은 이벤트를 사용할 때 리스너는 event 객체를 전달 받습니다. event 객체는 다음과 같은 중요한 프로퍼티를 가지고 있습니다.

  • touches : 복수로 화면에 터치되는 각 손가락들에 대한 터치 이벤트 모음들. 이 객체들은 페이지에 터치되는 좌표들의 값을 가지고 있습니다.
  • targetTouches : 터치할 때 발생합니다. 그러나 전체 페이지가 아닌 타깃 요소에만 반응합니다.

다음은 터치를 이용한 드래그와 드랍에 대한 간다한 예제입니다. 빈 페이지에 놓여진 박스에 손가락을 올려놓고 드래그 되도록 할 것입니다. 다음 코드는 touchmove 이벤트를 등록하여 손가락으로 움직일 때마다 박스의 포지션을 업데이트 합니다.
 window.addEventListener('load', function() {
 
  var b = document.getElementById('box'),
      xbox = b.offsetWidth  / 2, // half the box width
      ybox = b.offsetHeight / 2, // half the box height
      bstyle = b.style; // cached access to the style object
 
  b.addEventListener('touchmove', function(event) {
    event.preventDefault(); // the default behaviour is scrolling
    bstyle.left =  event.targetTouches[0].pageX - xbox + 'px';
    bstyle.top  =  event.targetTouches[0].pageY - ybox + 'px';
  }, false);
     
}, false);

touchmove 이벤트 리스너는 최초 손가락 움직임에는 반응하지 않습니다. 이것은 모바일 사파리의 페이지를 스크롤 컨트롤과 중복되기 때문입니다. event.targetTouches는 타깃 <div> 요소 위에 있는 각 손가락에 대한 데이터 목록들을 가지고 있습니다. 우리는 그중 하나에 대한 것만 필요하므로 event.targetTouches을 사용합니다. pageX는 손가락 위치의 x 좌표값입니다. 손가락이 박스의 중간에 위치할 수 있게 하기 위해 <div>의 가로 크기의 반을 x 좌표값에서 뺐습니다.

예제 11번은 위 코드로 작성되었습니다.

9. 제스처들

아이폰에는 손가락 하나 이상의 동작에 대한 제스쳐가 있습니다. 스케일링(줌-인과 줌-아웃) 그리고 회전 입니다. 기기에 터치하고 있는 각 손가락에 대한 정보를 가지고 있는 touchestargetTouches 이벤트에 관하여 우리는 이미 배웠습니다. 줌과 팬(파노라마)과 같은 제스쳐를 다루기 위해서도 위와 같은 이벤트들을 사용할 수 있지만, 조금 더 편리한 제스처 이벤트 들이 있습니다. 다음을 살펴 봅니다.

  • gesturestart
  • gestureend
  • gesturechange

다음 예제에서 gesturechange 이벤트에 반응하고 WebKit 전용 CSS 스타일 프로퍼티인 webkitTransform을 사용하여 div를 스케일링도 해보고 회전도 시켜볼 것입니다. 마찬가지로 이벤트 리스너는 이벤트 객체를 넘겨 받습니다. 이벤트 객체는 다음과 같은 프로퍼티를 가지고 있습니다.

  • event.scale : 값 1은 스케일링이 전혀 없습니다. 값이 1보다 작을 때는 줌-아웃(<div> 요소를 작게 만듦)이며 줌-인일때 1보다 값이 큽니다.
  • event.rotate - 이것은 회전 각도입니다.

아래 코드는 이전에 살펴봤던 터치 앤 드래그 코드와 매우 흡사합니다.
window.addEventListener('load', function() {
  var b = document.getElementById('box'),
      bstyle = b.style;
  b.addEventListener('gesturechange', function(event) {
    event.preventDefault();
    bstyle.webkitTransform = 'scale(' + event.scale + ') ' +
                             'rotate('+ event.rotation + 'deg)';
  }, false);
}, false);

예제 12번은 위 코드에 대한 액션을 보여줍니다. <div>요소를 스케일링하고 회전할 수 있습니다.

만약에 아이폰 시뮬레이터로 이 예제를 확인 하는 경우, 옵션키를 활성화 하면 손가락 모양의 두 회색 점이 나타날 것입니다. 마우스를 드래그하여 그 점들을 좁히거나 늘릴 수 있습니다.



10. 특수한 링크들

아이폰에서 전화번호가 나온 페이지를 조회하다가 이 전화번호를 일일이 타이핑하지 않고 클릭만으로 전화가 걸린다면 얼마나 좋을까요? 모바일 사파리에서는 이것이 가능합니다. 전화번호 링크를 생성하기를 원한다면 tel: 스키마를 사용할 수 있습니다.
<a href="tel:12345678900">Call me</a>

SMS 문자도 문제없습니다. 아이폰 텍스트 메세지 어플에 연결되는 sms: 스키마를 사용하세요.
<a href="sms:12345678900">Send me a text</a>

다음은 특별한 URI 스키마를 사용하지는 않지만 때때로 어떠한 링크들은 아이폰에서는 특별한 액션을 취하기도 합니다.
  • 아이튠즈 스토어 링크는 아이튠즈와 연결됩니다.
  • 구글맵 링크는 지도 애플리케이션과 연결됩니다.
  • 유튜브 링크는 유튜브 애플리케이션과 연결됩니다.
  • 이메일 주소 링크는 메일 애플리케이션에 연결됩니다.

11. 홈 아이콘

기쁘게도 어떠한 방문자가 당신의 사이트를 홈스크린(아이폰애플리케이션 실행 화면)으로 등록하고 싶어할 지도 모릅니다. 일반적으로 당신의 사이트를 홈스크린으로 추가하면, 아이폰은 당신의 사이트를 스크린샷해서 아이콘처럼 사용할 것입니다. 하지만 이보다는 아이폰에 최적화된 개인 아이콘을 제공하는 것이 더 좋지 않을까요?

그렇게 하기 위해서, 57x57픽셀의 PNG 파일을 만들고 apple-touch-icon.png라고 이름 짓습니다. 그리고 패비콘과 마찬가지로 웹서버의 root에 그 이미지를 넣으면 됩니다. 아이폰은 자동으로 이미지를 글로시하게 효과를 주고 라운드 박스로 만들기 때문에 일부러 제작할 필요까지는 없습니다.



<link> 요소를 사용하여 그 아이콘의 파일 이름이나 위치를 변경할 수도 있습니다. CDN처럼 다른 웹서버에서 이미지를 호스트하는 경우라면 <link> 요소에 아이콘의 위치를 지정하기 위해 다음과 같이 작성하세요.
<link rel="apple-touch-icon" href="http://www.example.com/my-filename.png" />

12. 디버깅: 소스 보기와 콘솔

아이폰에서 어떻게 소스를 볼 수 있을까요? 불행하게도 모바일 사파리만으로는 불가능합니다. 하지만 다행스럽게도 북마클릿은 모바일 사파리에서도 사용할 수 있기 때문에 소스를 조회하는 기능을 가진 북마클릿을 사용 할 수 있습니다.

자바스크립트document.documentElement.innerHTML를 사용하여 페이지의 소스를 출력할 수 있고 이러한 내용을 북마클릿으로 만들어 새 창으로 소스를 볼 수 있습니다. iPHoneWebDev에서는 이미 이런 소스보기 관련 북마클릿를 여럿 제공하고 있으며 이 밖에도 모바일 사파리의 디스플레이를 최적화 하는데 도움을 주는 다른 것들도 많습니다. 이 북마클릿을 사용하기 위해서는 데스크탑용 사파리에서 즐겨찾기에 추가하고 아이튠즈로 동기화하면 됩니다.

모바일 사파리는 디버깅 콘솔을 가지고 있습니다. 환경설정 > 사파리 > 개발자용 > 디버그 콘솔 옵션을 활성화하면 아이폰에서 디버깅 콘솔을 작동시킬 수 있습니다. 자 이제 디버그 콘솔이 사파리 브라우저 URL 툴바 아래에 나타날 것입니다. 페이지에 대한 에러를 보여주고 자바스크립트에서 디버그 메세지를 작성하기 위해 콘솔객체가 사용될 겻입니다.
console.log('Something');
console.error('Oops');
console.warning('Beware!');

이 것을 끝으로 흥분되고 도전할 만한 새로운 아이폰애플리케이션 개발에 조금이나마 도음이 되셨으면 좋겠습니다. 당신만의 특별한 아이디어로 승부하여 이루고자 하는 것들을 모두 이뤄내시길 바랍니다.
------------------------------------------------------------------------------------------------------------
출처 : http://firejune.com/1506

'퍼담기' 카테고리의 다른 글

무한도전 비빔밥 광고  (0) 2010.11.26
아이폰/아이패드/아이팟 터치용 모바일웹 개발팁 12개  (0) 2010.10.28
sendmail  (0) 2010.08.16
Pots Of Gold  (0) 2010.06.21

[사파리 를 이용한 아이폰/아이패드/아이팟 터치 모바일웹 테스트 하기]

1.우선 사파리5 를 설치합니다. (http://www.apple.com/kr/safari/download/)
  설치되어있다면 pass~

2. 설치한 사파리의 메뉴중 오른쪽 상단의 톱니바퀴 메뉴를 클릭 > 메뉴 중 기본설정을 클릭합니다.

사용자 삽입 이미지
 

3. 기본설정 > 고급탭 의 [메뉴 막대에서 개발자용 메뉴보기] 를 체크해줍니다.

사용자 삽입 이미지

4. 다시 사파리창으로 돌아와서 이번에는 페이지 모양의 아이콘을 클릭하면 개발자용 메뉴가 보이게 됩니다.
   개발자용 > 사용자 에이전트 를 차례대로 선택하면
   스샷에서 보이는것 처럼 여러가지 플랫폼으로 간단하게 전환이 가능합니다.

   훌륭합니다.

   단, 크기는 직접 손으로 조정해야한다는거 말고는 -_-;;(크기까지 해당 플랫폼과 맞게 딱 고정되었다면 좋겠다는!!)

사용자 삽입 이미지

사용자 삽입 이미지



5. 사파리깔기도 귀찮고, 이것마저도 귀찮다~면 그냥 다른 사람들이 만들어둔 사이트를 접속하는게 좋겠네요

- 아이폰 테스트 사이트
http://www.iphonetester.com/
http://www.testiphone.com/

- 아이패드용 테스트 사이트
http://www.ipadpeek.com/


6. 아니면 윈도우용 시뮬레이터를 설치해서 테스트~
  이전 포스팅가기



[아이폰용 모바일웹 제작 팁]

1. HTML5 의 input 태그를 이용한 상황에 맞는 아이폰 자판 레이이웃 호출하기

<input type="text" />
<input type="search" />
<input type="tel" />
<input type="url" />
<input type="email" />
<input type="time" />
<input type="number" />
<input type="datetime" />
<input type="week" />
<input type="date" />

2. 툴바숨기기

<script type="text/javascript">
 window.addEventListener("load",function(){
  setTimeout(scrollTo,0,0,1);
 },false);
</script>

3. 화면 회전시 폰트사이즈 고정

auto : 기본값, 화면회전후 비율에 맞게 폰트크기가 자동으로 조정됨.
none : 회전시에도 폰크기 고정.
n% : 폰트크기를 정한 크기로 변경.
 
 html {

      -webkit-text-size-adjust:none;

  }

4. 모바일웹페이지를 가로 크기에 딱 맞추기

user-scalable=no : 사용자의 확대보기 허용 여부(no/yes)
initial-scale=1.0  : 페이지 로딩시 확대비율
maximum-scale=1.0  : 최대확대비율
minimum-scale=1.0  : 최소축소비율
width=device-width : 플랫폼 가로 크기에 맞춤, 수치를넣으면 그수치에 맞게 맞춰짐.

<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />

 5. 회전에 따라 다른 css 적용하기

 <script type="text/javascript">
 function orient()
 {
  switch(window.orientation){
   case 0: document.getElementById("orient_css").href = "css/iphone_portrait.css";
    break;
   case -90: document.getElementById("orient_css").href = "css/iphone_landscape.css";
    break;
   case 90: document.getElementById("orient_css").href = "css/iphone_landscape.css";
    break;
  }
 }
 window.onload = orient();
  </script>

 <body onorientationchange="orient();">
 </body>

 6. 기본 어플 호출하기

 - 전화걸기 : <a href="tel:1588-2120 ">블루웹 고객센터</a>

 - 문자보내기 : <a href="sms:010-0000-0000">문자보내기</a>
 - 문자보내기실행 : <a href="sms:">문자보내기</a>

 - 메일보내기실행 : <a href="mailto:">메일보내기</a>
 - 메일보내기 : <a href="mailto:echos@blueweb.co.kr">메일보내기</a>
 - 내용채워서 메일보내기 : <a href="mailto:echos@blueweb.co.kr?cc=echos@blueweb.co.kr&bcc=echos@blueweb.co.kr&subject=test subjct&body=test body"">메일보내기</a>

모바일웹을 제작 할때의 가장 큰 문제는 만드는 환경은 PC이지만 실제 제공되는 환경은 스마트폰을 필두로한 개인 단말기들입니다. 모든 단말기를 소유하고 있어 테스트가 가능하다면야 전혀 문제가 되지 않겠지만, 그렇지 않다면 PC에 설치되어 테스트해볼수있는 시뮬레이터는 큰 도움이 될것입니다.

단, 맥기반의 PC 를 소유하고 있다면~ 당연히 SDK 설치하고 거기서 쓰는 진짜 시뮬레이터 ( 개발한 앱까지 테스트해볼수있는 -ㅅ-;) 가 100만배 당연한 일이겠지요~

하지만 그렇지 않다면~ 모바일웹 제작시에(앱은 테스트 불가능합니다.) 아이폰/아이패드 테스트로는 쓸만 할듯합니다.

Adobe 사의 Air 를 기반 Air 가 작동되는 환경이라면 구동이 가능합니다.
이름 :
ibbdemo2
제작 : http://labs.blackbaud.com/NetCommunity/Page.aspx?pid=249
구글 프로젝트 : http://code.google.com/p/ibbdemo2/

단축키를 통해 아이폰/아이패드 시뮬레이터간 전환이 가능하며, 회전, 플래쉬 온/오프 (실제 아이폰OS 브라우저인 사파리에서는 플래쉬가 구동불가입니다만) 기능 외 몇몇 기능이 주어집니다.

[설치 방법]
간단합니다. Adobe Air가 없다면 설치하고 그리고 iBBdemo2 를 설치하면 끝입니다.

1. Adobe air 다운로드 및 설치.

다운로드 : Get ADOBE AIR(http://get.adobe.com/kr/air/)
 

사용자 삽입 이미지


사용자 삽입 이미지



2.iBBDemo2 다운로드 및 설치
다운로드 :
http://code.google.com/p/ibbdemo2/downloads/detail?name=iBBDemo2.air&can=2&q=

사용자 삽입 이미지


사용자 삽입 이미지


3. 완료

설치 완료후 바로 실행을 체크 하셨다면 바로 아이패드 화면을 보실수 있습니다.



[시뮬레이터 사용법]

- 마치 맥에 설치된 SDK 마냥 단축키를 통해 제어 가능합니다. (처음 아이패드 실행시 떠있는 사이트가 단축키 설명 페이지)

- 단축키
CTRL + 1 : 아이패드로 전환
CTRL + 2 : 아이폰으로 전환
CTRL + 좌/우 방향키 : 아이폰/아이패드 회전
CTRL + D : 주소표시줄 토글  (마우스를 상단에 가져가도 나옵니다.- 아이폰 전용)
CTRL + + : 확대
CTRL + - : 축소
CTRL + SHIFT + F : 플래쉬 지원 기능 ON/OFF (실제 아이폰엔 없는기능이죠;;)

- 기타 기능
홈키 클릭 : 제작홉페이지로 돌아갑니다 가로 상태에서는 프로그램 종료
스크롤 : 화면 빈공간 클릭후(즉 포커스를 주고나서) 방향키 로 혹은 마우스 휠로 스크롤이 가능합니다.(웹브라우져와 동일하네요)
주소표시줄의 아이폰상의 새로고침/주소삭제 아이콘도 동일하게 작동합니다.
단, 그외에 키보드 입력, 이전/이후 즐겨찾기, 브라우저 화변 전환 등의 아이폰 브라우저 기능은 빠져있습니다.

다음엔 안드로이드용을 한번 찾아봐야겠네요 ^^;
  1. 희화니 2011.03.21 18:07 신고

    정말 너무나도 좋은정보인거같네요 감사드립니다

  2. 궁금 2011.05.22 21:05 신고

    음...질문이요...아이패드 가로모드에서는 홈키 클릭하면 종료라고 하셨는데...세로 모드로 하니..
    화면이 넘어가요..ㅡㅜ..혹시 축소는 안되겠죠???
    맥북프로인데..아직 초보라...--;; 죄송합니다...정보좀.부탁드려요..
    아이폰모드에서 세로 모드에서 홈키 클릭하려니 클릭이 안되요..ㅡㅜ

+ Recent posts

티스토리 툴바