Right now many users are getting this issue due to App Store outage. Here is some solution for that.
Apple
Apple Introduced iPhone, iPad, and many more in Sep 2021
New Apple TV+ Series
Apple plans to release a number of new shows and movies in 2021, and the premiere dates they have shown in this apple event.
App Store Improvements : Apple will start the process of evaluating apps, removing apps that no longer function as intended from September 7, 2016
App Store Improvements
We love helping customers discover innovative, useful, and exciting apps on the App Store. With more than 2 million apps available and around 100,000 new and updated apps submitted each week, there’s something for everyone. To make it easier for customers to find great apps that fit their needs, we’re implementing two suggestions from the developer community starting September 7, 2016.
Quality Apps
Quality is extremely important to us. We know that many of you work hard to build innovative apps and update your apps on the App Store with new content and features. However, there are also apps on the App Store that no longer function as intended or follow current review guidelines, and others which have not been supported with compatibility updates for a long time. We are implementing an ongoing process of evaluating apps for these issues, notifying their developers, and removing problematic and abandoned apps from the App Store.
Shorter App Names
Search is one of the most frequently used methods for customers to discover and download apps from the App Store. In hopes of influencing search results, some developers have used extremely long app names which include descriptions and terms not directly related to their app. These long names are not fully displayed on the App Store and provide no user value. App names you submit in iTunes Connect for new apps and updates will now be limited to no longer than 50 characters. You can learn more about creating effective app names, as well as icons, keywords, screenshots, and descriptions, by reading the App Store Product Page.
To make it easier for customers to find great apps that fit their needs, we want to ensure that apps available on the App Store are functional and up-to-date. We are implementing an ongoing process of evaluating apps, removing apps that no longer function as intended, don’t follow current review guidelines, or are outdated.
What to Expect
When will this process start?
We will begin the process of reviewing and removing apps from the App Store on September 7, 2016.
What types of apps will be affected?
Apps in all categories on the App Store will be evaluated to make sure they function as expected, follow current review guidelines, and are not outdated.
What will happen if an issue is found with my app?
The App Store team will contact you and ask you to make any necessary changes for your app to stay on the App Store. However, apps that crash on launch will be removed immediately from the App Store.
How long do I have to make the changes?
You will be asked to submit an update within 30 days to keep your app on the App Store. If you are unable to make the changes within this time frame, your app will be removed from the App Store until you submit an update and it is approved. Please note that apps that crash on launch will be removed immediately.
If my app is removed, will my app’s name become available for other developers to use?
No. When apps are removed from the App Store, they are not deleted from your account. Your app name will continue to be associated with your app.
If my app is removed, will current users be able to access my app?
Yes. Your app will remain fully functional for current users. They will experience no interruption to services and will still be able to buy in-app purchases. However, we recommend that you update your app as soon as possible to reinstate it on the App Store and ensure that it remains functional and engaging for new and existing customers.
What can I do to help my app be ready for future changes?
As a best practice, read the latest App Store Review Guidelines as they are published and make sure your apps follow them. We also recommend that you address any functionality issues and update your app regularly to fix bugs, offer new content, provide additional services, or make other improvements. If you are no longer updating your app, consider removing it from the App Store.
Reference From : Apple News
Bye Bye to NS from Swift!!
Many of the types are bridged to the Swift type like as (e.g., NSString being bridged to String).
Other Objective-C types are bridged to Swift are as follows :
Objective-C | Swift |
---|---|
NSString | String |
NSArray | Array |
NSDictionary | Dictionary |
NSData | Data |
NSError | Error (Added Swift 3 – Xcode 8 Beta 4) |
NSNotificationCenter | NotificationCenter |
And more…
Bye Bye to NS from Swift!!
Happy Coding 🙂
Best Tweets of iOS 10 & Swift 3 Updates
Use a struct instead of a string as your dictionary key for better performance ? #swiftlang #WWDC16 pic.twitter.com/9ITOLwyHox
— NatashaTheRobot (@NatashaTheRobot) June 19, 2016
So excited about the Swift Performance session already!#WWDC16 #swiftlang pic.twitter.com/vJAjrAJJjN
— NatashaTheRobot (@NatashaTheRobot) June 19, 2016
You can now know when the user dismisses your notification ? #WWDC16 #iOS10 #iosdev
— NatashaTheRobot (@NatashaTheRobot) June 19, 2016
Media Attachments in Notifications ?? #WWDC16 #iOS10 #iosdev pic.twitter.com/o7EopfE9wg
— NatashaTheRobot (@NatashaTheRobot) June 19, 2016
Whoa! We can now access the users notification settings for our app ??? #WWDC16 #iOS10 #iosdev pic.twitter.com/8fo9faLA6T
— NatashaTheRobot (@NatashaTheRobot) June 19, 2016
Oooh #keyPath in Swift 3.0 ? #byebyestrings pic.twitter.com/E9mj9NH7al
— Ayaka Nonaka (@ayanonagon) June 18, 2016
Now that I’ve had some time to recover from WWDC, I highlighted some of my favorite ? 3.0 features. Hope you enjoy! https://t.co/hm77J2NZV3
— Ayaka Nonaka (@ayanonagon) June 19, 2016
replacement for the graphics context creation pic.twitter.com/687sZCsxoD
— Alejandro Martinez (@alexito4) June 19, 2016
Before and after of Core Graphics (old C API) in Swift thanks to compiler magic using NS_SWIFT_NAME in Swift 3.0! ? pic.twitter.com/uJYANo5wqU
— Ayaka Nonaka (@ayanonagon) June 18, 2016
Swift 2.2 Warnings and It's Solutions – Xcode 7.3
Xcode 7.3 came with Swift 2.2 Version. I just updated to Xcode 7.3 and found following warnings because of Swift version change.
List of warnings with it’s solution:
- ‘var’ parameters are deprecated and will be removed in Swift 3
- Use of string literal for Objective-C selectors is deprecated; use ‘#selector’ instead
- ‘++’ is deprecated: it will be removed in Swift 3
- C-style for statement is deprecated and will be removed in a future version of Swift
- __FILE__ is deprecated and will be removed in Swift 3, please use #file
Warning with:
[code language=”obj-c”]
func functionTest(var param:String) {
print(param)
}
[/code]
Solution:
[code language=”obj-c”]
func functionTest(param:String) {
print(param)
}
[/code]
If you want to update that variable inside the function then you have to create copy of that variable to do operations on that.
Warning with:
[code language=”obj-c”]
btn.addTarget(self, action: "functionName", forControlEvents: UIControlEvents.TouchUpInside)
[/code]
OR
[code language=”obj-c”]
btn.addTarget(self, action: Selector("functionName"), forControlEvents: UIControlEvents.TouchUpInside)
[/code]
Solution:
[code language=”obj-c”]
btn.addTarget(self, action: #selector(ViewController.functionName), forControlEvents: UIControlEvents.TouchUpInside)
[/code]
Apple Documentation : Added information about the #selector syntax for Objective-C selectors to the Selector Expression section.
Warning with:
[code language=”obj-c”]
var i = 0
for str in arrStr {
print(str)
i++
}
[/code]
Solution:
[code language=”obj-c”]
var i = 0
for str in arrStr {
print(str)
i += 1
}
[/code]
Apple Documentation : Removed discussion of C-style for loops, the ++ prefix and postfix operators, and the — prefix and postfix operators.
Warning with:
[code language=”obj-c”]
for var i=0; i<arrStr.count; i += 1 {
print(arrStr[i])
}
[/code]
Solution:
[code language=”obj-c”]
for i in 0 ..< arrStr.count {
print(arrStr[i])
}
[/code]
Warning with:
[code language=”obj-c”]
__FILE__
[/code]
Solution:
[code language=”obj-c”]
#file
[/code]
More swift tutorials/articles are available here.
Happy Coding 🙂
Let Us Loop You Out Again – Apple Event Announcements
Apple’s ‘Let Us Loop You In’ On March 21, 2016 a special event by Apple.
for loopYou in letUS {
break
}
Announcements
- Apple introduces Liam.
- Apple announces CareKit.
- Apple Watch sport and leather bands in new colors for spring.
- Apple introduces the iPhone SE.
- iOS 9.3 is available as a free update for everyone beginning today.
- Apple introduces 9.7-inch iPad Pro.
Create your own Slider menu (Drawer) in Swift
This article is updated with Swift 4 – Xcode 9 – iOS 11
Why to use a library everytime?
Let’s create our own Slide Menu (Drawer) in Swift 4.
1. Create New Project in Xcode 9 with Swift Language
2. Design the Menu in UIViewController
Declaration of Variables and Protocols (Delegate) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
protocol SlideMenuDelegate { func slideMenuItemSelectedAtIndex(_ index : Int32) } class MenuViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { /** * Array to display menu options */ @IBOutlet var tblMenuOptions : UITableView! /** * Transparent button to hide menu */ @IBOutlet var btnCloseMenuOverlay : UIButton! /** * Array containing menu options */ var arrayMenuOptions = [Dictionary<String,String>]() /** * Menu button which was tapped to display the menu */ var btnMenu : UIButton! /** * Delegate of the MenuVC */ var delegate : SlideMenuDelegate? } |
Following method is for updating the Items in the Menu :
1 2 3 4 5 |
func updateArrayMenuOptions(){ arrayMenuOptions.append(["title":"Home", "icon":"HomeIcon"]) arrayMenuOptions.append(["title":"Play", "icon":"PlayIcon"]) tblMenuOptions.reloadData() } |
Following method is for click event and animation :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@IBAction func onCloseMenuClick(_ button:UIButton!){ btnMenu.tag = 0 if (self.delegate != nil) { var index = Int32(button.tag) if(button == self.btnCloseMenuOverlay){ index = -1 } delegate?.slideMenuItemSelectedAtIndex(index) } UIView.animate(withDuration: 0.3, animations: { () -> Void in self.view.frame = CGRect(x: -UIScreen.main.bounds.size.width, y: 0, width: UIScreen.main.bounds.size.width,height: UIScreen.main.bounds.size.height) self.view.layoutIfNeeded() self.view.backgroundColor = UIColor.clear }, completion: { (finished) -> Void in self.view.removeFromSuperview() self.removeFromParentViewController() }) } |
3. Now we will create a Base UIViewController to use anywhere in the project which control the delegate of menu.
First we will create this 3 lines Drawer Icon via Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
func addSlideMenuButton(){ let btnShowMenu = UIButton(type: UIButtonType.system) btnShowMenu.setImage(self.defaultMenuImage(), for: UIControlState()) btnShowMenu.frame = CGRect(x: 0, y: 0, width: 30, height: 30) btnShowMenu.addTarget(self, action: #selector(BaseViewController.onSlideMenuButtonPressed(_:)), for: UIControlEvents.touchUpInside) let customBarItem = UIBarButtonItem(customView: btnShowMenu) self.navigationItem.leftBarButtonItem = customBarItem; } func defaultMenuImage() -> UIImage { var defaultMenuImage = UIImage() UIGraphicsBeginImageContextWithOptions(CGSize(width: 30, height: 22), false, 0.0) UIColor.black.setFill() UIBezierPath(rect: CGRect(x: 0, y: 3, width: 30, height: 1)).fill() UIBezierPath(rect: CGRect(x: 0, y: 10, width: 30, height: 1)).fill() UIBezierPath(rect: CGRect(x: 0, y: 17, width: 30, height: 1)).fill() UIColor.white.setFill() UIBezierPath(rect: CGRect(x: 0, y: 4, width: 30, height: 1)).fill() UIBezierPath(rect: CGRect(x: 0, y: 11, width: 30, height: 1)).fill() UIBezierPath(rect: CGRect(x: 0, y: 18, width: 30, height: 1)).fill() defaultMenuImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return defaultMenuImage } |
Delegate (Protocol) method call :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
func slideMenuItemSelectedAtIndex(_ index: Int32) { let topViewController : UIViewController = self.navigationController!.topViewController! print("View Controller is : \(topViewController) \n", terminator: "") switch(index){ case 0: print("Home\n", terminator: "") self.openViewControllerBasedOnIdentifier("Home") break case 1: print("Play\n", terminator: "") self.openViewControllerBasedOnIdentifier("PlayVC") break default: print("default\n", terminator: "") } } |
To open a view controller by identifier :
Set the Restoration Identifier and Storyboard Identifier. If current view is open then we will not open it once again for that we have to check via Restoration Identifier.
1 2 3 4 5 6 7 8 9 |
func openViewControllerBasedOnIdentifier(_ strIdentifier:String){ let destViewController : UIViewController = self.storyboard!.instantiateViewController(withIdentifier: strIdentifier) let topViewController : UIViewController = self.navigationController!.topViewController! if (topViewController.restorationIdentifier! == destViewController.restorationIdentifier!){ print("Same VC") } else { self.navigationController!.pushViewController(destViewController, animated: true) } } |
4. Now We will assign this drawer to any of the UIViewController
We have to use only one method to add drawer (slide menu) self.addSlideMenuButton()
1 2 3 4 5 6 7 |
import UIKit class HomeVC: BaseViewController { override func viewDidLoad() { super.viewDidLoad() addSlideMenuButton() } } |
Source Code is available at the Github AKSwiftSlideMenu
You can download for versions of Swift 2, Swift 3 or Swift 4. From Releases Tab at GitHub AKSwiftSlideMenu.
Check other blog posts about Swift
Happy Coding 🙂