project report on ios app development
TRANSCRIPT
SRM UniversityKattankulathur, Chennai, India
An Internship Report
On
iOS Application Development
Submitted to SRM College of Engineering
Computer Science and Engineering Department In partial fulfilment of the requirements for the degree of B.Tech program
under SRM University
Submitted By
Arpan Sarkar
STEFANINI INDIA PVT LTD.
An Internship Report
On
iOS Application Development
Submitted to Stefanini India Pvt Ltd.
In partial fulfilment of the requirements for the degree of B.Tech program under
SRM University
Submitted By
Arpan Sarkar
Acknowledgement
I am thankful to SRM University for providing me an opportunity to pursue this internship training and gain the knowledge related to the program.
I am especially indebted to all my teachers for instilling in me enough knowledge to be able to carry myself efficiently during my internship.
Secondly, I am bound to thank to all the staff of Stefanini India Pvt Ltd., especially Mr.Shankar Sarkar who helped me acquire this internship in this esteemed organisation. Also Mr. Ajay Kota whose inspiring guidance, remarkable suggestions, constant encouragement, keen interest, constructive criticism and friendly discussions helped me to learn and enabled me to complete this training efficiently.
Last but not the least, I would like to thank all my friends and family who have supported me to complete this report by sharing their views and idea.
Thanking You
Arpan Sarkar
Executive Summary
The internship report is the necessary part of the B.Tech program, and every
student has to do internship in some organisation related to his/her field of interest.
After successful completion of the internship work a student is required to write
whatever practices and practical work he has done in his training duration.
Internship was my first step in practical life, through which I learnt a lot and it has aided me in being well equipped with valuable experience that would help me once I enter the professional life after the completion of my studies. Internship offered to me was 30 days in training and operations.
During the time between of 26-May to 26- June, I worked in Stefanini India Pvt Ltd as an intern. It was a great experience for me. What I learnt at Stefanini over the weeks was how to get along with the co-workers, building confidence and improving my skills. I tried to remain to the point, in writing the report. An overview of the organisation future Prospects and recommendations are also given in the report.
This work is the collection of my observation and experience during the internship period and afterwards. This internship has also prepared me for my career ahead. The experience has taught me responsibility, teamwork and how to tackle problems occurring. Even though the nature of work was quite basic as an internee, nevertheless I got to see what practical life is. This report gives a profile of Stefanini India Pvt Ltd and an insight into the department where I worked. This report also reflects my learnings and experience at ITC PSPD Ltd along with my responsibilities and the tasks that I performed.
Table of Contents
1. Objective of the internship2. Overview of Organisation - Services3. Overview of the work performed - Job details4. About Apple5. The MAC6. The MAC OS
7. The iPhone
8. iOS 8.1. iOS Introduction 8.2. iOS Architecture9. Xcode 9.1. Xcode Introduction 9.2. Getting familiar with Xcode environment10. Developing an App
11. The Currency Converter App 11.1. Design & Navigation 11.2. Screens 11.3. Into the code12. Publishing your app in the App Store
13. Issues and Problems
14. Core Theoretical Concept Vs Practical Experience
15. Conclusion
16. References
1. Objectives of the Internship
This internship was done as a partial fulfilment of my B.Tech course under SRM
University. The main objective of this internship program is to provide the student a basis
or platform to understand the real world problem and its solution methodology. It
facilitates the students the ability to relate theoretical knowledge with practical
experience, to get outer exposure and to study the market trends. For me, the main
objective of this internship program was to understand how the different operations are
carried out inside a company. How such large and huge data are regularly operated and
maintained to give 24X7 services to the customers. I also have gained knowledge about
how information flow from one department to another with the help of intranet . Besides
this, I developed the skill to self detect faults and finding a proper solution to it with at
most patience in both technical and no technical issues.
The specific objectives of the study are :
i. To implement the theoretical knowledge in the real world environment.
ii. To build up confidence , interpersonal and communication skills.
iii. To understand how resource sharing is done in a real working environment.
iv. To gain knowledge about application development and its various technical
terms.
v. To know how documentation is done, records are created and maintained and
security consideration is implemented.
vi. To increase a sense of responsibility and acquire good work habit.
2. Overview of organisation:
The Stefanini is a multinational Brazilian private, service provider, software for data processing and consulting, based in Jaguariuna / SP.
Founded in 1987 by current president Marco Stefanini, has subsidiaries in 33 countries (including India).
Stefanini is considered one of the largest IT consulting firms in the world, was identified as the first in the list of the best outsourcing companies in Latin America, the study of the Black Book of Outsourcing.
In 1989 it opened its first office in the state of Sao Paulo. The following year, the company started the development and maintenance of systems, becoming in 1994 one Software Factory with the development of customised software for systems and applications. After the year 2000 Stefanini opened offices in eight countries in four years.
Services
The company provides a number of services to its customers. A few of them are listed below:
1.Enterprise Mobility Services
1.1 User Experience Design Services
1.2 Mobile App Development
1.3 Enterprise Mobile Management
1.4 Managed Mobility Services
2. SAP Consulting Services
3. Application Outsourcing Services
3.1 Application Management Services
3.2 Custom Software Development
4. SharePoint Services
4.1 Custom SharePoint Development
4.2 SharPoint Intranet Design and Optimisation
4.3 Enterprise Content Management
4.4 SharePoint Deployments and Upgrades
5. Mainframe Services
5.1 Mainframe Development and Maintenance 5.2 Mainframe Optimisation
5.3 Mainframe Modernisation
5.4 Mainframe testing
5.5 Mainframe Migration
6. Digital Media
3. Overview of the Work Performed
I have completed the internship Program as per details below:
Course Title : Mobile Application Development
Location(Company, City , Country) : Stefanini Pvt Ltd, Hyderabad,
India
Job Details
I was assigned to perform the intern in Stefanini, Hyderabad unit,
where various operation of networking and system management is
performed by skilled manpower. I was assigned to work with the
iOS Mobile Application Development Team headed by Mr. Ajay
Kota who was also my mentor for the training duration.
About Apple Apple Inc. is an American mul3na3onal technology company headquartered in Cuper3no, California, that designs, develops, and sells consumer electronics, computer so=ware, online services, and personal computers. Its best-‐known hardware products are the Mac line of computers, the iPod media player, the iPhone smartphone, the iPad tablet computer, and the Apple Watch smartwatch. Its online services include iCloud, the iTunes Store, and the App Store. Apple's consumer so=ware includes the OS X and iOS opera3ng systems, the iTunes media browser, the Safari web browser, and the iLife and iWork crea3vity and produc3vity suites.
Apple was founded by Steve Jobs, Steve Wozniak, and Ronald Wayne on April 1, 1976, to develop and sell personal computers.[5] It was incorporated as Apple Computer, Inc. on January 3, 1977, and was renamed as Apple Inc. on January 9, 2007, to reflect its shi=ed focus towards consumer electronics.
Apple is the world's second-‐largest informa3on technology company by revenue a=er Samsung Electronics, world's largest technology company by Total Assets and the world's third-‐largest mobile phone maker.
The MAC The Macintosh (branded as Mac since 1998) is a series of personal computers (PCs) designed, developed, and marketed by Apple Inc. Steve Jobs introduced the original Macintosh computer on January 24, 1984. This was the first mass-‐market personal computer featuring an integral graphical user interface and mouse.
Produc3on of the Mac is based on a par3al ver3cal integra3on model. While Apple designs its own hardware and creates its own opera3ng system that is pre-‐installed on all Mac computers, Apple sources components, such as microprocessors, RAM and LCD panels from other vendors.[3] Apple also relies on contract manufacturers like Foxconn and Flextronics to build most of its products.[4] This approach differs from most IBM PC compa3bles, where mul3ple sellers create and integrate hardware intended to run another company's opera3ng system.
Apple also develops the opera3ng system for the Mac, currently OS X version 10.10 "Yosemite". Macs are currently capable of running non-‐Apple opera3ng systems such as Linux, OpenBSD, and Microso= Windows with the aid of Boot Camp or third-‐party so=ware. Apple does not license OS X for use on non-‐Apple computers, though it did license previous versions of Mac OS through their Macintosh clone program from 1995 to 1997.
The MAC OS Mac OS is a series of graphical user interface-‐based opera3ng systems developed by Apple Inc. for their Macintosh line of computer systems.
The original opera3ng system was first introduced in 1984 as being integral to the original Macintosh, and referred to as the "System".
Macintosh opera3ng systems have been released in two major series. Up to major revision 9, from 1984 to 2000, it is historically known as Classic Mac OS. Major revision 10, from 2001 to present, is branded OS X (originally referred to as Mac OS X). Major revisions to the Macintosh OS are now issued as point revisions, such that, for example, 10.2 is substan3ally different from 10.5. Both series share a general interface design, and there has been some overlap with shared applica3on frameworks and virtual machine technology for compa3bility; but the two series also have deeply different architectures.
Brief History of MAC OS Early versions of Mac OS were compa3ble only with Motorola 68000-‐family Macintoshes. As Apple introduced computers with PowerPC hardware, the OS was ported to support this architecture. Mac OS 8.1 was the last version that could run on a "68K" processor (the 68040).
OS X, which has superseded the "Classic" Mac OS, is compa3ble with only PowerPC processors from version 10.0 ("Cheetah") to version 10.3 ("Panther"). Both PowerPC and Intel processors are supported in version 10.4 ("Tiger", Intel only supported a=er an update) and version 10.5 ("Leopard"). 10.6 and later versions support only Intel processors.
Before the introduc3on of the later PowerPC G3-‐based systems, significant parts of the system were stored in physical ROM on the motherboard. The ini3al purpose of this was to avoid using up the limited storage of floppy disks on system support, given that the early Macs had no hard disk (only one model of Mac was ever actually bootable using the ROM alone, the 1991 Mac Classic model). This architecture also allowed for a completely graphical OS interface at the lowest level without the need for a text-‐only console or command-‐line mode.
OS X YOSEMITE (Version 10.10)
The latest version of OS X is 10.10 "Yosemite", which was released to the public on October 16, 2014.
OS X Yosemite (version 10.10) is the eleventh major release of OS X, Apple Inc.'s desktop and server opera3ng system for Macintosh computers. Following the California landmark-‐based naming scheme introduced with OS X Mavericks, Yosemite is named a=er the na3onal park.
OS X Yosemite showcased many outstanding features:
Design Yosemite introduced a major overhaul of OS X's user interface. Its graphics replaced skeuomorphism with flat graphic design and blurred translucency effects, following the aesthe3c introduced with iOS 7. Some icons have been changed to correspond with those of iOS 7 and iOS 8. Yosemite maintains the OS X desktop metaphor.
Con3nuity Many of Yosemite's new features focus on the theme of con3nuity, increasing its integra3on with other Apple services and plamorms such as iOS and iCloud. The Handoff func3onality allows the opera3ng system to integrate with iOS 8 devices over Bluetooth LE and Wi-‐Fi; users can place and answer phone calls using their iPhone as a conduit, send and receive text messages, ac3vate personal hotspots, or load items being worked on in a mobile app (such as Mail dra=s or Numbers spreadsheets) directly into their desktop equivalent.
No3fica3on Center No3fica3on Center features a new "Today" view, similar to that in iOS. The Today view can display informa3on and updates from various sources, along with widgets. The widgets in the Today view are similar to those of iOS 8.
Photos As of OS X 10.10.3, Photos replaces iPhoto and Aperture. It uses iCloud Photo Library to upload all the user's photos across their devices.
Other Spotlight is a more prominent part of the opera3ng system; it now displays its search box in the center of the screen and can include results from online sources, including Bing, Maps, and Wikipedia.
Stock applica3ons such as Safari and Mail have been updated.
In addi3on, Apple added DuckDuckGo to its search offerings, a non-‐tracking search engine that doesn’t store users’ data.
JavaScript for Automa3on (JXA) is the new system-‐wide support for scrip3ng with JavaScript, built upon JavaScriptCore and the Open Scrip3ng Architecture. It features an Objec3ve-‐C bridge which enables en3re Cocoa applica3ons to be programmed in JavaScript.
The iPhone iPhone is a line of smartphones designed and marketed by Apple Inc. They run on Apple’s iOS mobile opera3ng system. The first genera3on iPhone was released on June 29, 2007; the most recent iPhone models are the iPhone 6 and iPhone 6 Plus, which were unveiled at a special event on September 9, 2014.
iPhone Development phase There are eight genera3ons of iPhone models, each accompanied by one of the eight major releases of iOS.
1st-‐genera3on iPhone The original 1st-‐genera3on iPhone was a GSM phone and established design precedents, such as a bupon placement that has persisted throughout all releases and a screen size maintained for the next four itera3ons.
iPhone 3G & 3GS The iPhone 3G added 3G cellular network capabili3es and A-‐GPS loca3on. The iPhone 3GS added a faster processor and a higher-‐resolu3on camera that could record video at 480p.
iPhone 4 & 4S The iPhone 4 featured a higher-‐resolu3on 960×640 "Re3na Display", a VGA front-‐facing camera for video calling and other apps, and a 5-‐megapixel rear-‐facing camera with 720p video capture.
The iPhone 4S upgrades to an 8-‐megapixel camera with 1080p video recording, a dual-‐core A5 processor, and a natural language voice control system called Siri.
iPhone 5, 5S & 5C iPhone 5 features the dual-‐core A6 processor, increases the size of the Re3na display to 4 inches, introduces LTE support and replaces the 30-‐pin connector with an all-‐digital Lightning connector.
The iPhone 5S features the dual-‐core 64-‐bit A7 processor, an updated camera with a larger aperture and dual-‐LED flash, and the Touch ID fingerprint scanner, integrated into the home bupon.
The iPhone 5C features the same A6 chip as the iPhone 5, along with a new backside-‐illuminated FaceTime camera and a new casing made of polycarbonate.
iPhone 6 & iPhone 6 Plus The iPhone 6 and iPhone 6 Plus further increased screen size, measuring at 4.7 inches and 5.5 inches, respec3vely. In addi3on, they also feature a new A8 chip and M8 mo3on coprocessor.
iPhone 6 & 6 Plus Specifica3on sheet
Specifica-ons iPhone 6 iPhone 6 Plus
DIMENSIONS 138.1 x 67 x 6.9 mm 158.1 x 77.8 x 7.1 mm
Opera3ng System iOS 8.3 iOS 8.3
ChipA8 chip with 64-‐bit architecture
M8 mo3on coprocessor
A8 chip with 64-‐bit architecture
M8 mo3on coprocessor
CPU 1.4 GHz dual-‐core ARMv8-‐A Cyclone 2nd gen.
1.4 GHz dual-‐core ARMv8-‐A Cyclone 2nd gen.
GPU PowerVR Series 6 GX6450 (quad-‐core)
PowerVR Series 6 GX6450 (quad-‐core)
Memory 1 GB LPDDR3 RAM 1 GB LPDDR3 RAM
Storage 16, 64 or 128 GB 16, 64 or 128 GB
Bapery 1810 mAh 2915 mAh
Display 4.7 in (120 mm) 1334x750 pixel resolu3on, 326 ppi pixel density
5.5 in (140 mm) 1920x1080 pixel resolu3on, 401 ppi pixel density
Front Camera 1.2-‐MP (1280×960 px max.), 720p video recording (30 fps)
1.2-‐MP (1280×960 px max.), 720p video recording (30 fps)
Rear Camera 8-‐MP with 1.5 focus pixels with digital image stabiliza3on
8-‐MP with 1.5 focus pixels with op3cal image stabiliza3on
iOS
Introduc3on iOS (originally iPhone OS) is a mobile opera3ng system created and developed by Apple Inc. and distributed exclusively for Apple hardware. It is the opera3ng system that presently powers many of the company's mobile devices, including the iPhone, iPad, and iPod touch.
iOS shares with OS X some frameworks such as Core Founda3on and Founda3on; however, its UI toolkit is Cocoa Touch rather than OS X's Cocoa, so that it provides the UIKit framework rather than the AppKit framework. It is therefore not compa3ble with OS X for applica3ons. Also while iOS also shares the Darwin founda3on with OS X, Unix-‐like shell access is not available for users and restricted for apps, making iOS not fully Unix-‐compa3ble either.
The user interface of iOS is based on the concept of direct manipula3on, using mul3-‐touch gestures. Interface control elements consist of sliders, switches, and bupons. Interac3on with the OS includes gestures such as swipe, tap, pinch, and reverse pinch, all of which have specific defini3ons within the context of the iOS opera3ng system and its mul3-‐touch interface. Internal accelerometers are used by some applica3ons to respond to shaking the device (of which one common result is the undo command) or rota3ng it in three dimensions (one common result is switching from portrait to landscape mode or vice-‐versa).
The current release, iOS 8.3, was released on April 8, 2015. The current version of the opera3ng system (iOS 8.0), dedicates 1.3 -‐ 1.5GB of the device's flash memory for the system par33on, using roughly 800 MB of that par33on which varies by model for iOS itself. It runs on the iPhone 4S and later, iPad 2 and later, all models of the iPad Mini, and the 5th-‐genera3on iPod Touch.
iOS Architecture
In iOS, there are four abstrac3on layers:
The Core OS layer (Mac OS Kernel) • TCP/IP
• Sockets
• File system
• Power management
• Security
The Core Services layer • Embedded SQLite database
• Core Loca3on
• Networking
• Core mo3on
• Threads
The Media layer • OpenAL
• OpenGL ES
• Audio mixing and recording
• Video playback
• Image file formats
• Core anima3on
• Quartz
The Cocoa Touch layer • Mul3-‐touch events and controls
• Accelerometer support
• Camera support
• View hierarchy
• Localiza3on (i18n)
XCode
Introduc3on
Xcode is an integrated development environment (IDE) containing a suite of so=ware development tools developed by Apple for developing so=ware for OS X and iOS. First released in 2003, the latest stable release is version 6.3 and is available via the Mac App Store free of charge for OS X Yosemite users.
The Mach-‐O executable format in Xcode which allows for “fat binaries," containing code for mul3ple architectures, Xcode can build universal binaries, which allow so=ware to run on both PowerPC and Intel-‐based (x86) plamorms and that can include both 32-‐bit and 64-‐bit code for both architectures. Using the iOS SDK, Xcode can also be used to compile and debug applica3ons for iOS that run on the ARM processor.
The main applica3on of the suite is the integrated development environment (IDE). The Xcode suite also includes most of Apple's developer documenta3on, and built-‐in Interface Builder, an applica3on used to construct graphical user interfaces.
Xcode supports C, C++, Objec3ve-‐C, Objec3ve-‐C++, Java, AppleScript, Python, Ruby, Rez, and Swi= source code with a variety of programming models, including but not limited to Cocoa, Carbon, and Java. Third par3es have added support for GNU Pascal, Free Pascal, Ada, C#, Perl and D.
Gexng familiar with Xcode environment
For developing any iOS applica3on it is very necessary to understand the Xcode environment and get a good hand on it.
Why learn Xcode?
According to Apple’s developer site: Xcode includes everything you need to create an app. It not only organizes the files that go into creating an app, it provides editors for code and interface elements, allows you to build and run your app, and includes a powerful integrated debugger.
To start with, first it is necessary to have a knowledge of Xcode’s user interface:
�
Image Source: Apple developer site
Developing An App
Get the tools Before you start developing an iOS app you will be needing some set of requirements to work in.
To develop iOS apps, you need:
• A Mac computer running OS X 10.9.4 or later
• Xcode
• iOS SDK
Review a Few concepts of Objec3ve-‐C o/r Swi= Apple allows its developers to code in any of the two available languages i.e. the formerly available Objec3ve-‐C or the newly came up Swi=. Your knowledge in any of these languages will help you build your iOS applica3on.
The Currency Converter App
The currency converter app we developed here is a very simple and well know applica3on which in our case services on a CUBE User Interface. The app facilitates the user to check currency rate conversions from any currency of his choice to any other with an eye catching 3-‐D UI.
Design And Naviga3on As men3oned above the applica3on features a CUBE UI for naviga3on through screens. To apain this we used a special kind of a Naviga3on Controller in Xcode known as the “Cube Controller” which facilitates the user to navigate by swiping away through screens like turning the faces of a cube.
The applica3on surfaces two screens for the user to interact while using it. User Interface -‐ 1
UI -‐ 1 features a list of currencies from which the user can select in mul3ple.
The selected currencies appear on UI -‐ 2 where the user can see the conversion rate between them.
It also features a search bar on the top for the user to search for any specific currency immediately from the list.
• For the search bar we use the UISearch Bar class which is a inbuilt class in Xcode.
UISearchBar displays a rounded rectangle that can contain editable text. When a user taps a search bar, a keyboard appears; when a user taps Return in the keyboard, the keyboard disappears and the search bar can handle the input in an applica-on-‐specific way. By default, UISearchBar displays the search icon. It can also display placeholder text and a clear text control when user-‐input text is visible.
• The list is displayed using the Table View which accesses “UITableView” class, which is another inbuilt class provided by Xcode.
The UITableView displays a single-column list of multiple rows through which users can scroll. Each row in a table view is a UITableViewCell object.
User Interface -‐ 2
The UI -‐ 2 showcases the main screen where the user can choose two currencies from two dynamic lists which displays the list of user -‐ selected currencies from the previous screen and along side there value as compared to the one in the other.
The user can slide up and down to switch currencies in the list.
Tapping on any currency in the list lets the user to set a value whose equivalent in the currency in the other list is displayed spontaneously.
To facilitate all this func3onality in UI -‐ 2 we used 3 well know elements present in Xcode:
1. For the two rota3ng dynamic lists we used two “Picker Views”. One in the top and the other in the bopom.
The picker view uses “UIPickerView” class which provides a poten-ally mul-dimensional user-‐interface element consis-ng of rows and components. A component is a wheel, which has a series of items (rows) at indexed loca-ons on the wheel. Each row on a component has content, which is either a string or a view object such as a label or an image.
2. Then we used three “Labels” to display the conversion taking “From” and “ To” in text for beper indica3on. This implements a class called “UILabel”. The labels here accept value dynamically from the selec3on made by the user in the Picker View.
UILabel implements a read-only text view. A label can contain an arbitrary amount of text, but UILabel may shrink, wrap, or truncate the text, depending on the size of the bounding rectangle and properties you set. You can control the font, text color, alignment, highlighting, and shadowing of the text in the label.
3. And lastly the “View” which contains all the other elements on the screen in it. It takes in a class called “UIView”.
UIView provides a structure for drawing and handling events. A UIView object claims a rectangular region of its enclosing superview (its parent in the view hierarchy) and is responsible for all drawing in that region, as well as receiving events that occur in the region.
Another important thing to notice is the number pad, which facilitates the user to submit values for conversion.
The number pad slides in to the screen from the bottom automatically when the user single taps on the value section.
• The number pad uses a “UIView” which contains all the buttons in it altogether.
• To design the number pad we used “Buttons” from the object library. We studded 12 buttons on board each carrying its own value and functionality such as the delete button at the end.
Into the code
The conversion ra3o used to convert currency values is not defined in the code. It is being invoked from the data provided by a website “themoneyconverter.com”, whose data we have parsed into our iOS applica3on.
The line of code which performs this func3on is illustrated below for beper relevance.
*NOTE: Data from a external source such as a website can’t be just taken in directly into an applica3on.
To perform this we use a technique called “Data parsing”.
Defini3on: Breaking a data block into smaller chunks by following a set of rules, so that it can be more easily interpreted, managed, or transmiRed.
In simple terms we use data parsing to convert a specific set of data into a format which can can prove more usable based on our requirements.
Another important point where we need to mark is while using the Table View and wri3ng code in the background for it using UITableView class.
There are two func3ons we need to specifically declare for a table view when we use it.
1. numberOfRowsInSec-on -‐ This is used to set the number of cells the table view will adopt.
2. cellForRowAtIndexPath -‐ This is used to populate the cells in the table view with some data.
Publishing Your App in the Store
A=er the app is ready the very next step you would want to do is submixng the app on the app store if you want your app to be used by the masses. For uploading your app on the app store apple recommends a developer to follow a certain set of steps and procedure.
1. If you use TestFlight to distribute your iOS app to testers (described in Beta Tes3ng iOS Apps), submit the last build directly to App Review using iTunes Connect, if necessary, validate the last archive you distributed for tes3ng, described in Running iTunes Connect Valida3on Tests.
2. For Mac apps, test the Mac Installer Package, as described in Tes3ng the Mac Installer Package.
3. Upload the archive, as described in Uploading Your App Using Xcode.
4. Use iTunes Connect to submit your app to App Review, as described in Submixng the App.
The first 3me you upload your app to iTunes Connect, Xcode creates the necessary distribu3on cer3ficate and store provisioning profile for you.
About Store Provisioning Profiles
A store provisioning profile is a distribu3on provisioning profile that authorizes your app to use certain app services and ensures that you are the one submixng your app. A store provisioning profile contains a single App ID that matches one or more of your apps and a distribu3on cer3ficate. You configure the App ID indirectly through Xcode to use certain app services. You enable and configure app services by sexng en3tlements and performing other configura3on steps. Some en3tlements are enabled for an App ID, and others are set in the Xcode project. When you submit your app to the store, Xcode signs the app bundle with the distribu3on cer3ficate referenced in the store provisioning profile.
�
Prepare for Uploading Before uploading your app to iTunes Connect, review the human interface and store guidelines, enter information in iTunes Connect, and verify your Xcode project settings.
Review Human Interface and Store Guidelines To streamline the approval process, review the following guidelines and fix any problems and retest your app before continuing.
• Follow the user interface guidelines in iOS Human Interface Guidelines
• Review the store guidelines in App Store Review Guidelines for iOS Apps
Enter Information in iTunes Connect iTunes Connect is a web tool you use to enter information about your app for sale in the App Store or the Mac App Store. iTunes Connect stores all the metadata about your app including the versions and builds that you upload using Xcode.
Verify Your Xcode Project • Review your Xcode project configuration.
• The bundle ID in the Xcode project, described in Setting the Bundle ID, should match the bundle ID you enter in iTunes Connect.
• Use the same App ID to code sign your archive as you used for development and testing.
• If you don’t use any app services that require an explicit App ID, you can use the Xcode wildcard App ID. If you want to create a new App ID, read Registering App IDs. However, if you change your App ID, retest your app using the new App ID before uploading it to iTunes Connect.
• Review the version number and build number settings, described in Setting the Version Number and Build String. iTunes Connect extracts its prerelease version number and build number from the binary.
• To ensure that your app enables the key app services you want to use, review your App ID settings.
Archiving and Valida3ng Your App
Archives allow you to build your app and store it, along with cri3cal debugging informa3on, in a bundle that’s managed by Xcode. Save an archive for any version of an app you distribute to users. You’ll use the debugging informa3on stored in the archive to decipher crash reports later.
Follow these steps to archive and validate your app:
• Review the Archive scheme sexngs.
• Create an archive of your app.
• Validate the archive.
• If necessary, test your archive before uploading it.
Reviewing the Archive Scheme Settings
1. In the Xcode project editor, choose Product > Scheme > Edit Scheme to open the scheme editor.
2. Click Archive in the column on the left.
3. Choose Release from the Build Configuration pop-up menu, and click Close.
Running iTunes Connect Validation Tests Immediately after creating the archive, upload your archive to iTunes Connect and run validation tests.
To validate an archive
1. In the Archives organizer, select the archive.
2. Click the Validate button.
3. For Mac apps, select “Validate for the Mac App Store” as the validation method and click Next.
4. In the dialog that appears, choose a team from the pop-up menu and click Choose.
If necessary, Xcode creates a distribution certificate and distribution provisioning profile for you. The name of the distribution provisioning profile begins with the text XC:.
5. In the dialog that appears, review the app, its entitlements, and provisioning profile, and click Validate.
Xcode uploads the archive to iTunes Connect and iTunes Connect runs validation tests. If a dialog appears stating that no application record can be found, click Done, create an app record in iTunes Connect, and repeat these steps.
6. Review validation issues that are found, if any, and click Done.
Fix any validation issues you find, create a new archive, and repeat these steps until there are no further issues. Note: You can’t proceed until the archive passes all the validation tests.
Uploading Your App Using Xcode
Upload your code signed and provisioned app to iTunes Connect. This important step ensures that the upload comes directly from you and that only you grant permission for your app to use certain app services. Code signing your app or installer package prevents an attacker from uploading a modified version of your app—only someone with the private key for your distribution certificate can upload your app to iTunes Connect.
To upload an app to iTunes Connect
1. In the Archives organizer, select the archive and click the “Submit to the App Store” button.
�
2. In the dialog that appears, choose a team from the pop-up menu and click Choose.
If necessary, Xcode creates a distribution certificate and distribution provisioning profile for you. The name of the distribution provisioning profile begins with the text XC:.
3. In the dialog that appears, review the app, its entitlements, and provisioning profile, and click Submit.
Xcode uploads the archive to iTunes Connect and iTunes Connect runs validation tests. If a dialog appears stating that no application record can be found, click Done, create an app record in iTunes Connect, and repeat these steps.
4. If issues are found, click Done and fix them before continuing.
5. If no issues are found, click Submit to upload your app.
Xcode transmits the archive to Apple, where the binary is examined to determine whether it conforms to Apple guidelines. If the binary is rejected, correct the problems that were identified and upload a new binary. If you successfully upload your app, view the version and build of your app in iTunes Connect, as described in Viewing Binary Details. Later, use iTunes Connect to submit your app to App Review, as described in Submitting the App. If you prefer to upload your binary using Application Loader, read Using Application Loader for how to use Application Loader for this step.
Issues and Problems
I faced a number of problem during the course of my internship. Various problems
I faced are:
i. The concept of application development is not yet covered in my academic
syllabus and it was completely new chapter to me so I faced a little problem
initially to get a hang of the topic and get in flow with it.
ii. Due to the security provisions in Stefanini I did not get chance to work in a
real project. Though my mentor demonstrated me everything in real time
and the company made the best resources available to me for my proper
training.
iii. The internship period was limited due to which I did not get chance to to
learn more and gain more experience as I have learnt there’s a lot more in
the field to discover.
Core Theoretical Concept Vs Practical Experience
When it comes to knowledge there are different kinds of knowledge and different
ways of acquiring each kind. One is the theory and the other phase is the practical
implementation of theory. Both the types of knowledge are important and both
makes us better at whatever we do. It helps us understand the concept that why one
technique works where another fails to sustain. So it is important to implement our
theoretical knowledge into practical professional life which makes us stronger in
our career.
Practical knowledge helps us to acquire the specific techniques that become the
tools of our objective. It sits much closer to our actual day-to-day work. There are
some things we can only learn through doing and experiencing. Practical
knowledge can often lead to a deeper understanding of a concept through the act of
doing and personal experience. Both of the above are important, we won’t survive
in any career unless we can bring results and to do that we need practical
knowledge.
Many theoretical knowledge which I studied in my university course got
implemented or perceived and proved helpful in my training course. One good
example of this can be the knowledge in object oriented programming languages
which in this case was Objective-C.
Conclusion
Stefanini being a prestigious organisation provided a chance to fresher like
me who is still under learning process to enhance the abilities by giving a
chance of internship in their renowned organisation. I came up with the
understanding of the actual working of the organisation as the staff was
highly co-operative and guided me at every step.
It was a great experience overall, both working and learning. I am sure the
time I spent here gaining experience in my subject is going to help me a lot in
my studies and career ahead.
Apart from the technical knowledge I acquired, this training gave me an
experience of what it’s like to work in an actual office environment and what
all the difficulties we come across in our professional day to day life.
References www. stefanini.com/en (Stefanini official website)
www.wikipedia.org (For definitions and other general
information on various topics)
Mr. Ajay Kumar Kota (iOS Team Lead, Mentor)