Developer Changes for In-App Purchases

    image

    When Apple introduced the ability to publish apps to the iOS App Store in 2008, it was a very different landscape from what we have now. Back then you had either apps that you published for free or ones that were paid up front. Now, free apps are far more common than paid up-front apps.

    In 2010, Apple introduced a new product, the iPad, which allowed for more opportunities within the App Store. With the introduction of the iPad you had two options, create a universal app, one that would work on both the iPhone and the iPad, or create two separate apps; one built for each platform.

    While the possibility to build two distinct apps remained for a while, the introduction of the Apple Watch and the Apple TV have made the idea of creating distinct apps for each platform a bit harder to accomplish. The interfaces should be tailored for each platform, but the app itself would likely be shared amongst iOS and iPadOS.

    Last year with the introduction of macOS Catalina, there was a new way to distribute your existing iOS apps, to macOS, through a project called Catalyst.

    With free apps there are a number of different strategies for supporting free apps. These can be, ad-based, subscriptions, or in-app purchase. It has become more and more common for the latter two of these to be used. With in-app purchases, if you built an application for both iOS and macOS, using Catalyst or native frameworks, you would have to create two different in-app purchases, because they could not be shared between the platforms.

    With the introduction of iOS 13.4 and macOS Catalina 10.15.4 you will

    be allowing customers to enjoy your app and in‑app purchases across platforms by purchasing only once. You can choose to create a new app for these platforms using a single app record in App Store Connect or add platforms to your existing app record.

    This is a huge change for the App Store and the distribution of apps in general. Users have been requesting the ability to purchase an app once and have it work on all of their devices. While this works for users, this can have some implications for developers.

    Developer Implications

    While the option to distribute a single application to all of the platforms is optional, it is likely something that users will quickly come to expect from developers. Yes, there are tools like Catalyst for macOS, it is still not at its full maturity in terms of having iOS apps ported to the Mac look and behave like native macOS apps that use AppKit.

    This can have some ramifications for the developer. The first being that this can easily cut into profits for a developer. For larger companies, this may not be a big problem, but for the smaller independent developers this can have a huge impact.

    With the pressure to make your application available on all platforms, and in-app purchases being good across all platforms, this will likely reduce the income for developers.

    There are some developers who have wanted to have universal in-app purchases available because they want their users to be able to have the same experience on all platforms, plus users also question why they have to make the same purchase on multiple platforms. Therefore, this will be a great addition for both users and developers.

    In-App Purchases on watchOS

    Starting with watchOS 6.2, developers will be able to provide in-app purchases directly from watchOS. This will have a huge benefit to the watchOS platform as developers will not need to have users use their paired iPhone to perform in-app purchases, but instead have it possible to purchase them directly on the Apple Watch. This should provide a better experience for Apple Watch users and the in-app purchase workflow.

    Closing Thoughts

    While the addition of universal apps as well as universal in-app purchase will create a better experience for users, it could have some ramifications for developers in that they will be expected to support universal in-app purchase, which developers may want to do, as well as supporting universal app purchase, which may reduce their income.

    I cannot say that this is not altogether unexpected, because it is something that both users and developers have been asking for for a while. It may take some time for applications to come to support universal in-app purchases as well as universal app purchases. This should be available starting with iOS 13.4, macOS 10.15.,4, tvOS 13.4, and watchOS 6.2.

    Tags:

    Apple Introduces Swift Crypto

    image

    There are many things that can mark the maturity of a programming language. Things like Application Binary Interface, or ABI, stability, Application Programmer Interface, or API, consistency, the re-working of the language syntax, or the inclusion of a vital feature within the language. It has been five and half years since Apple introduced its own programing language, Swift.

    In the years since its introduction Swift has undergone a huge transformation since its initial release. With Swift 3, the entire syntax of the language was redone so that it had a consistent naming and its syntax was significantly shortened. Swift 5 introduced a new Swift-only interface language called SwiftUI. and with Swift 5.1, ABI stability came into existence. One thing that has been missing from Swift has been its own native Cryptographic library. That has now changed.

    Swift Crypto

    At the dot Swift conference Apple introduced a new feature to the Swift programming language, Swift Crypto. Swift Crypto is an open-source re-implementation of Apple's objective-c framework CryptoKit. There are a few things that make Swift Crypto a bit different from other cryptographic frameworks.

    The first is that Swift Crypto is not built into the Swift language itself. Instead, it is implemented as a Swift Package. This has a couple of added benefits. The first benefit is because it is a Swift Package, it can be independently updated outside of the core Swift language. This means that should a vulnerability be found in the package or its implementation it can be fixed and a new release be made. Similarly, if new algorithms become standard, these too can be implemented without requiring a new version of Swift. Furthermore, this means that if you need to keep on an older version of a language you do not need to sacrifice security.

    The second benefit is that this package will work on all of Apple's platforms, macOS, iOS, tvOS, and watchOS, as well a on Linux. The fact that the package will work on Linux means that both your server side code and client code can use the same cryptographic libraries.

    Implementation

    Swift Crypto uses Google's BoringSSL framework for implementing the cryptographic primitives and therefore does not re-implement these, but only on non-Apple Platforms. If you use Swift Crypto on Apple's platforms, it defers to CryptoKit. That does not mean that you should not use Swift Crypto within your project though. While it will defer to CryptoKit, using Swift Crypto will provide you a consistent interface across all platforms, which will make your code easier to maintain.

    Secure Enclave

    Apple's native CryptoKit APIs implements some interfaces to Apple's security hardware processor, called Secure Enclave. Because Swift Crypto will work on both Apple's platforms as well as Linux, results in Swift Crypto not implementing these APIs. Hence, if you need to utilize the Secure Enclave APIs, you will still need to use the CryptoKit APIs to implement these.

    Closing Thoughts

    The addition of a Swift-native Cryptographic library will make it easier in a couple of ways. First, by allowing the same Swift Package to be used across Apple's platforms as well as Linux. While Swift Crypto will not implement the Secure Enclave APIs, any implementations made within CryptoKit will also be done within Swift Crypto.

    Being a Swift Package, Swift Crypto can be kept up to date with the changing landscape of cryptography independent of relying on a new version of Swift to have any changes implemented.

    The addition of Swift Crypto should allow a consistent implementation between server-side code as well as client code making it easier to implement the features, regardless of platform. Swift Crypto does require Swift 5.1 or later and the package is semantically versioned and, as of this writing, is at version 1.0.0. If I need to implement any cryptographic items within my projects, I will likely use Swift Crypto

    Source: Swift.org

    Tags:

    My Ongoing iCloud Issues (And a Possible Fix)

    image

    When technology "just works" it is absolutely fantastic. It can allow us to do things that we never thought possible. Technology can provide us interactions and efficiencies that were mere ideas only a short time ago. However, when technology goes awry, it can be a complete disaster. This is exhibited with my ongoing iCloud issues.

    The Issue

    The issue I am having with iCloud is that I cannot upload any files to iCloud Drive. When I do, it just sits and pretends it will upload the files, but it does not. The same goes with downloading files from iCloud Drive; no files can be downloaded. This renders iCloud entirely useless.

    Now, this may not be a big issue if I only used iCloud randomly and sporadically; but that is not the case. I use Apple's "Desktop & Documents folders" syncing feature, which allows any files I create in m "Documents" or "Desktop" folders to synchronize to all of my Macs and iCloud. This includes being able to access the files from within any application or on my iOS devices. Due the inability to upload or download any files to iCloud, these features are entirely broken.

    Backstory

    This actually began on December 1oth, 2019 after I upgraded my iMac to macOS Catalina 10.15.2. My MacBook Pro is usually on the developer version of macOS and it did not exhibit any of this behavior and was synchronizing files without a hitch. At first I thought it might have just been a fluke and that iCloud needed time to resynchronize everything. After a few days of not being able to synchronize anything, I contacted Apple Support.

    Apple Support

    When I contacted Apple support I was connected with a tech support person who attempted to help me. We did some testing, which included trying to upload files to iCloud on all of my devices and on different networks, rebooting the device, but none of these steps had any effect.

    Since the first tech support person I contacted was not able to find a fix, I was transferred to a specialist. Over the course of a couple weeks we did various things, including:

    • Creating a test file and uploading it (does not work)
    • Creating a new account and trying to upload a file (does not work)
    • Trying to find any offending files that were not uploading and remove them (had no effect)
    • Uploading files via the web interface (which did and does still work)
    • Creating a file at a specific time and then gathering the logging information for 24 hours

    After all of this testing and nothing working, the issue was sent to Engineering. Engineering came back with some questions and requests, and required screenshots on iOS of the issue. One of the things they requested was to install a configuration profile to gather some data. The log that was uploaded ended up being well over a gigabyte in size; and that was when it was compressed.

    Partial Fix

    Due to the complete hassle this has been I began looking for a fix on my own. As with any problem, it is best to search google. I came up with this solution from stackexchange.com. The following commands were entered into terminal:

    killall bird
    cd ~/Library/Application\ Support
    rm -rf CloudDocs

    These steps will do the following:

    1. Stop the "bird" service. The "bird" service is the service that controls uploading and downloading data to and from iCloud Drive.
    2. Change directories to the local user Application Support directory under the "Library" directory.
    3. Remove all of the cached files for iCloud.

    When these have been done, you need to restart the computer, just to be on the safe side. When I did this on my MacBook Pro, it began downloading the file list in iCloud Drive. Once this was done, the biggest portion of the work began. That work is comparing the local copies of the files with the files that are stored in iCloud Drive. The length of time is depending on the number of locally stored files that you have.

    Due to the amount of information I had on my MacBook Pro this ended up taking several hours. But once it was finished I tested uploading a file to iCloud Drive and it worked. I waited a couple of days to make sure things still worked. Upon verification, I then performed the same steps on my iMac and it produced the same results, albeit the amount of time it took on my iMac was a bit longer due to having more files on my iMac.

    My iOS devices were another matter entirely. Because you do not have access to terminal on iOS, you cannot perform the same actions. The only steps you can do on iOS are:

    1. Open the Settings app.
    2. Click on your Name at the top to open up the iCloud settings.
    3. Tap on "iCloud" to open iCloud options.
    4. Scroll down to "iCloud".
    5. Tap on iCloud Drive toggle switch to disable it. A popup may appear.
    6. Click on "Delete from iPhone" to confirm any documents that are not synchronized will be deleted. This will turn off iCloud Drive and delete any locally saved documents.
    7. Reboot the iOS device.
    8. Plug the iOS device into power.

    You can then restart your device and perform the same steps to turn iCloud Drive back on. When I did this, it did not seem to have any effect, at first. After about 45 minutes the files that are stored in iCloud Drive populated. Unlike on macOS, I do not think any of the downloaded files that I had remained on the device. One last thing to keep in mind is that when you disable iCloud Drive on an iPhone it will also disable the Wallet app, because the Wallet app depends on iCloud Drive to function properly. So you will want to re-enable Wallet on your device as well. Disabling iCloud Drive will not remove your cards, so I am not sure what function requires iCloud Drive within the Wallet app.

    Once I saw the list of files, I then created a test folder and verified that it would indeed upload and I could see it on my other devices. So, this seemed to work.

    It may not strictly be necessary to plug the iOS device into power, but it cannot hurt because when an iOS device is connected to power, additional processes will run that may not run when the device is on power and this may ultimately speed up the population of the iCloud Drive files.

    Possible Root Cause

    While I cannot fully know, I think I have determined the cause of the issue. When it comes to any app, you are likely to have a "state" for something. In the case of Files, the "source of truth" is iCloud. I think that the synchronization information on my iMac somehow got corrupted and that corrupted information propagated to all of my devices. The only way to get things back into place was to erase the local cache and re-download all of the data from the server.

    Closing Thoughts

    As of this writing, everything seems to be working. I am somewhat disappointed that Apple could not find a solution, and I was left to find a solution on my own. Also, at the moment, my issue is still in Engineering, and I do not expect to hear back from my support representative about a fix for the issue. I am glad I was able to find a solution to get things back on track, but these types of things need to be handled by Apple in a much faster manner than they are now.

    One way to mitigate this from happen would be for Apple to create some sort of automated testing that occurs on each device where it attempts to create a file and upload it to iCloud. If this does not happen within a period of time, say 24 hours, send a push notification that will trigger the resetting of the iCloud cache information stored on the device. This type of solution would be able to mitigate, if not eliminate, these types of issue because it would end up being proactive and not wait for the user to notice that something is wrong and attempt to find a solution with the help of Apple. I completely get that I may have just been a "lucky" one to run into this bug and it may only be affecting a small percentage of users. However, when you have 1.5 billion active devices, even one tenth of one percent is still 1.5 million people. Even if the percentage is much smaller, this type of solution could go a long way to improving user experience.

    Tags:

    Commercials Chicagoans Know Well

    image

    This post has been in "Draft" since mid-2018 and I figured I would post this, because why not. If you watched TV in the Chicagoland area during the '90s you have undoubtedly seen all of these commercials.

    I thought about the commercials that I remember seeing during the '90s. I thought I would post a few of my favorite commercials from when I was growing up.

    Tags:

    Upcoming Changes for Apple Developers

    image

    When you sign up to be an Apple Developer one of the things that you do is agree to abide by App Store Review Guidelines. These guidelines change from time to time depending on technology, the needs of developers, and the limitations that Apple wants/needs to apply.

    Last June the guidelines were modified and two additions were made. These are regarding "HTML5 Apps" and "Updates in the Kids Category". There are some changes for both that will go into effect on March 3rd, 2020. Let us look at each of the changes.

    HTML 5 Apps

    Before there were native apps on iOS there were HTML5 apps, which was referred to as a "Sweet Solution". While this worked, it was not nearly as elegant as using a native application. A majority of applications in use today are built entirely with their native SDKs and do not require any external code. There are some apps that may require some code that is downloaded from another server. This is possible with Apple's platforms. However, there are some limitations regarding the code that can be downloaded.

    Specifically, HTML5 apps cannot contain or run code that provides access to real money gaming, lotteries, or charitable donations.

    Apps For Kids

    The next area to discuss is Apps for Kids. Any app that is within the "Kids" category, which means that it is intended to be used by kids. Due to the nature of these apps, there are some restrictions that developers need to comply with.

    "Apps published on the App Store must protect children’s data and provide only age-appropriate content. Apps must also require a parental gate in order to link out of the app, request permissions, or present purchasing opportunities. It’s critical that apps do not transmit personally identifiable information or device information to third parties, and that advertisements are human-reviewed for age appropriateness in order to be displayed."

    Besides being conscious of children's data, in some places this is necessary to comply with local laws.

    Closing Thoughts

    Developers have to keep up with the changes not only in tools and techniques, but also the changing landscape of building apps for Apple's platforms. One of those areas is complying with the App Store Review Guidelines. What may have been accepted previously, may no longer be accepted. If you are going to be uploading a new version of your application anytime after March 3rd, 2020, you will want to comply with the new rules; especially the one regarding privacy of kids' data. It would not be surprising if Apple begins outright rejecting apps that do not comply with protecting the data of kids starting on March 3rd.

    Source: Apple, Apple

    Tags:

    wwrite and wwriteLite 4.6.0 Now Available

    image

    I have published updates for both wwrite and wwriteLite. Each app is now at version 4.6.0.

    Both wwrite and wwriteLite add that ability to import files from the Files app, including iCloud Drive, and any other third-party services that you have linked within the Files app. This is done by going to "+" -> Import Files.

    There is one bug fix for both apps. If you had tried to "Copy files" using a share sheet from another app, it would have failed. This has been fixed. There is one feature, specifically for wwriteLite.

    Removing Ads

    One of the features that I have wanted to add to wwriteLite is the ability to remove the ads. This is now possible through an in-app purchase. This is accessed by going to Tools -> In-App Purchases. Removing Ads will cost you $0.99. The reason I chose this amount is because $0.99 is the same price as wwrite, which does not have ads. Additionally, this is a way to support the development of both of the apps.

    Due to these changes, the Frequently Asked Questions and the Change Log for each app has been updated, so be sure to check those out. wwrite 4.6.0 and wwriteLite 4.6.0 are free updates and are available now in the App Store.

    Tags:

    Apple Arcade After Four Months

    image

    Back in March of last year at their services event, Apple announced a new service that was focused on games. This service is Apple Arcade. At the time Apple announced that Apple Arcade would be available "in the fall". Ultimately, this ended up being mid September with the release of iOS 13. One of the selling points was the ability for it to be on all of Apple's platforms, iOS, macOS, and tvOS. This part in particular intrigued me, since I prefer playing games on my TV with a controller, which is also possible with iOS 13, tvOS13, and macOS Catalina, as opposed to touch gestures using my iPhone or iPad.

    When Apple Arcade became available I immediately signed up and played a few games. The ones I played included "What The Golf?", "Word Laces", "Frogger in Toy Town", "Mini Motorways", and "Skate City". I intended to play some other games, like "Overland" and "Over the Alps". These last two would probably be ideal for a bigger screen.

    I played a lot of two of these games, a little of a couple, and a moderate amount of one. The games I played only a little included Skate City and Frogger. I played Frogger to see how it would be in a modern game and Skate City reminded me of Tony Hawk, expect in 2D. I played Word Laces a bit, maybe 100 puzzles, but ended up stopping because it got to be a bit too repetitive.

    The two games that I played the most were What the Golf and Mini Motorways. I beat almost all of the What the Golf levels but there was one that I could not beat and eventually gave up.

    Last week I cancelled my subscription to Apple Arcade. I did this for a few reasons. The first is that I realized I did not play any games from Apple Arcade games for over a month and keeping the subscription was a waste of money. The second reason is that the games I enjoy playing on my iPhone and iPad are ones that can be done quickly. The last reason is that as much as I enjoyed playing Mini Motorways, which is my favorite out of all of them, I realized that I prefer to own my games and not rent them. The same can be said for my console gaming. I do not have a subscription to those games either, I purchased my console games.

    The final reason I opted to cancel my Apple Arcade subscription is the fact that I am not one who plays a whole bunch of different mobile games. Instead, I tend to stick with playing the same games over time. For instance, I play three games every day, Dissembler, Solitaire, and Word Search. These all have daily puzzles which keeps me coming back to the game. I have been playing these, particularly Solitaire, for a very long time; in fact since at least November 1st, 2014 when they introduced their daily challenges. I had intended on playing games on my Apple TV, but never ended up doing so.

    Cancelling Apple Arcade was the right decision for me and in no way is a reflection on my thoughts of the service overall. I think Apple Arcade is a great service which allows you, and the entire family, to play a ton of games for a very reasonable amount of $4.99 per month, and even less if you pay annually. If I feel as though I want to go back and play some of the games, or if a must-play title comes out, I can always resubscribe to Apple Arcade.

    Tags:

    One Downside to Streaming and Subscriptions

    image

    The way that we consume media has greatly changed over the last twenty years. At the turn of the century, which seems just like yesterday, we listened to mix-CDs on our Sony Walkman CD players or had MP3s that were either ripped from CDs or obtained via other means. Movies were on DVDs, as Blu-Ray would not come to market until 2006. And there was no streaming media to speak of due to lack of bandwidth, both on the server and consumer sides. Basically, we purchased our media or borrowed it from others.

    There were some who had high-speed internet, but this was likely using a desktop that was not equipped with Wi-Fi. One of the most ubiquitous items that everyone has today is a cell phone. Yes, cell phones were available and had just started to become more and more popular, but they were still not as commonplace as today. If you did have a cell phone, you actually used it as a phone and if you were lucky you could possibly have a very basic game or two. Life has changed significantly in a mere twenty years.

    Today we have streaming media and subscription services. There seems to be a subscription for just about everything these days. Some of the types of subscriptions available include games, music, movies, apps, and tv shows. The two types of services that most users have a subscription to are for Music and Movies/TV Shows. For music, there are options like Spotify, Apple Music, Google Play Music, Amazon Music Unlimited, among others. For Movies and TV Shows, you can subscribe to Netflix, Amazon Prime, Apple TV+, Hulu, and Disney+, along with other options.

    The shift that we have had over the last twenty years means that we have gone from owning our own media to merely being renters. Having a subscription can be a mixed bag. On the one hand, we are able to see shows that we may not have purchased. This results in us being able to consume more media, which creates more demand, which means more content will be created. Being able to subscribe to a service means that you can dip in and out, and you do not need to make a significant commitment to the service. To provide some perspective for the amount of content available, according to Variety, in 2019, Netflix alone had more new shows than the entire television industry did in 2005. And that is just one streaming service, so you can imagine how many new shows were created in 2019.

    With having subscriptions, on an intellectual level, we all know that we do not have perpetual access to media, yet is not always something that we fully understand. We have all had a show that we enjoyed on a service disappear because the rights for that program with that service have expired. This is quite common with movies and TV Shows. Whereas it is not as common with music. However, I have experienced, first hand, a song that gets pulled from a service, yet it does happen from time to time.

    I am one who subscribes to fewer streaming and subscription services than most. I have Amazon Prime, Apple TV+, Apple Music, and This Old House. I used to subscribe to Apple Arcade, but I cancelled it, but that is another story. The service I use the most is Apple Music. This is because I listen to music throughout the work day.

    Now I have had songs that have not been playable, because they were singles and the album that contains the single has been released, so access to the single is removed. In these cases, I just re-add the song and continue one. However, I have not had a song just become completely unavailable before. I went to listen to the song "Never Told a Lie" by Noah Smith using Apple Music and I could not. At first I thought, maybe an album has been released with it on it, but that is not the case.

    Next, I was thought, I will go and buy the song. I searched the iTunes Store, could not find it. I then searched Amazon Music, could not find it in the U.S. It is not available on Spotify, Amazon Music Unlimited, Pandora, or any other streaming service in the U.S. Even the YouTube video has been pulled. When I did some searching it is possible to purchase, just not in the U.S. You can purchase the song in the UK, Germany, Italy, and many other countries.

    While I am generally in favor of streaming services, the times when media is no longer be available, can be inconvenient. Suffice to say, if you want to be sure that some media remains available you will need to purchase it. You will likely want to purchase the items before it is too late.

    I do this with movies and some TV shows, but not as often with music. Due to not being able to listen to "Never Told a Lie" anymore, I have taken my own advice and purchased a number of songs that I did not own, but had added to my iTunes library from Apple Music. In all, I ended up purchasing 39 songs. Some of these songs were just singles, so I purchased the entire "album", while others were just songs on albums, so I purchased them individually.

    I understand that this is very much a first-world problem, but it is one that you may experience at some point and it is easily avoidable. If you would like to see the list of songs that I purchased, you can do so by browsing the Apple Music playlist.

    Tags:

    iPhone 11, iPhone 11 Pro, and iPhone 11 Pro Max availability for 12/15/2019 (Morning)

    image

    Here is the iPhone 11, iPhone 11 Pro, and iPhone 11 Pro Max availability for the mid-morning of December 15th, 2019.

    There are no changes for Apple, it is still two days for delivery. It should be noted that in most metropolitan areas, you can get Apple products delivered within two hours. It may be worth checking this option out, if you need to purchase something.

    There have been some changes for the carriers as well.

    Changes for the Carriers

    • ATT - 64GB White iPhone 11 has changed from Dec 12, 2019 to Dec 23, 2019
    • ATT - 64GB Green iPhone 11 has changed from Dec 16, 2019 to Dec 19, 2019
    • ATT - 64GB Yellow iPhone 11 has changed from Dec 12, 2019 to Jan 6, 2020
    • ATT - 128GB Yellow iPhone 11 has changed from Dec 23, 2019 to Dec 19, 2019
    • ATT - 256GB Yellow iPhone 11 has changed from Dec 16, 2019 to Jan 20, 2020
    • Sprint - 256GB White iPhone 11 has changed from 12/13 - 12/20 to In Stock
    • Sprint - 256GB Black iPhone 11 has changed from 12/13 - 12/20 to In Stock
    • Sprint - 256GB Purple iPhone 11 has changed from In Stock to 12/27 - 1/3
    • Sprint - 256GB (PRODUCT)Red iPhone 11 has changed from 12/13 - 12/20 to In Stock
    • T-Mobile - 64GB White iPhone 11 has changed from Dec 08 - Dec-10 to Dec 18 - Dec-20
    • T-Mobile - 128GB White iPhone 11 has changed from Dec 12 - Dec-18 to Dec 24 - Dec-30
    • T-Mobile - 256GB White iPhone 11 has changed from Dec 10 - Dec-12 to Dec 16 - Dec-18
    • T-Mobile - 128GB Black iPhone 11 has changed from Dec 17 - Dec-23 to Dec 15 - Dec-17
    • T-Mobile - 256GB Black iPhone 11 has changed from Dec 20 - Dec-26 to Jan 07 - Jan-21
    • T-Mobile - 64GB Green iPhone 11 has changed from Dec 08 - Dec-10 to Dec 16 - Dec-18
    • T-Mobile - 128GB Green iPhone 11 has changed from Dec 10 - Dec-12 to Jan 07 - Jan-21
    • T-Mobile - 256GB Green iPhone 11 has changed from Jan 03 - Jan-17 to Jan 07 - Jan-21
    • T-Mobile - 128GB Yellow iPhone 11 has changed from Dec 10 - Dec-12 to Dec 18 - Dec-20
    • T-Mobile - 256GB Yellow iPhone 11 has changed from Jan 03 - Jan-17 to Dec 23 - Dec-30
    • T-Mobile - 64GB Purple iPhone 11 has changed from Jan 05 - Jan-20 to Dec 24 - Dec-30
    • T-Mobile - 128GB Purple iPhone 11 has changed from Jan 05 - Jan-20 to Dec 23 - Dec-30
    • T-Mobile - 256GB Purple iPhone 11 has changed from Jan 03 - Jan-17 to Jan 07 - Jan-21
    • T-Mobile - 256GB (PRODUCT)Red iPhone 11 has changed from Jan 01 - Jan-15 to Jan 07 - Jan-21
    • Verizon - 256GB Black iPhone 11 has changed from 12-09-2019 to Available
    • ATT - 512GB Silver iPhone 11 Pro has changed from Dec 12, 2019 to Jan 20, 2020
    • Sprint - 256GB Midnight Green iPhone 11 Pro has changed from 12/6 - 12/13 to In Stock
    • T-Mobile - 256GB Space Gray iPhone 11 Pro has changed from Dec 12 - Dec-18 to Dec 23 - Dec-30
    • T-Mobile - 64GB Silver iPhone 11 Pro has changed from Dec 08 - Dec-10 to Dec 16 - Dec-18
    • T-Mobile - 256GB Silver iPhone 11 Pro has changed from Jan 03 - Jan-17 to Jan 07 - Jan-21
    • T-Mobile - 256GB Midnight Green iPhone 11 Pro has changed from Dec 20 - Dec-26 to Jan 07 - Jan-21
    • T-Mobile - 64GB Gold iPhone 11 Pro has changed from Dec 18 - Dec-24 to Dec 15 - Dec-17
    • T-Mobile - 256GB Gold iPhone 11 Pro has changed from Jan 03 - Jan-17 to Jan 07 - Jan-21
    • T-Mobile - 64GB Space Gray iPhone 11 Pro Max has changed from Dec 09 - Dec-11 to Dec 15 - Dec-17
    • T-Mobile - 256GB Space Gray iPhone 11 Pro Max has changed from Dec 09 - Dec-11 to Dec 23 - Dec-30
    • T-Mobile - 512GB Space Gray iPhone 11 Pro Max has changed from Dec 18 - Dec-24 to Jan 07 - Jan-21
    • T-Mobile - 64GB Silver iPhone 11 Pro Max has changed from Dec 09 - Dec-11 to Dec 15 - Dec-17
    • T-Mobile - 256GB Silver iPhone 11 Pro Max has changed from Dec 20 - Dec-26 to Jan 07 - Jan-21
    • T-Mobile - 64GB Midnight Green iPhone 11 Pro Max has changed from Dec 09 - Dec-11 to Dec 15 - Dec-17
    • T-Mobile - 256GB Midnight Green iPhone 11 Pro Max has changed from Dec 12 - Dec-18 to Dec 23 - Dec-30
    • T-Mobile - 64GB Gold iPhone 11 Pro Max has changed from Dec 09 - Dec-11 to Dec 15 - Dec-17
    • T-Mobile - 256GB Gold iPhone 11 Pro Max has changed from Dec 09 - Dec-11 to Jan 07 - Jan-21
    • T-Mobile - 512GB Gold iPhone 11 Pro Max has changed from Dec 08 - Dec-10 to Dec 16 - Dec-18

    iPhone 11

    ATT 64GB 128GB 256GB
    White Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Black Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Yellow Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Purple Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    (PRODUCT)Red Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Sprint 64GB 128GB 256GB
    White Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Black Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Yellow Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Purple Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    (PRODUCT)Red Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    T-Mobile 64GB 128GB 256GB
    White Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Black Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Yellow Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Purple Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    (PRODUCT)Red Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Verizon 64GB 128GB 256GB
    White Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Black Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Yellow Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Purple Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    (PRODUCT)Red Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Sim-Free 64GB 128GB 256GB
    White Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Black Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Yellow Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Purple Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    (PRODUCT)Red Tue, Dec 17 Tue, Dec 17 Tue, Dec 17

    iPhone 11 Pro

    ATT 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Sprint 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    T-Mobile 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Verizon 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Sim-Free 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17

    iPhone 11 Pro Max

    ATT 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Sprint 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    T-Mobile 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Verizon 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Sim-Free 64GB 256GB 512GB
    Space Gray Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Silver Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Midnight Green Tue, Dec 17 Tue, Dec 17 Tue, Dec 17
    Gold Tue, Dec 17 Tue, Dec 17 Tue, Dec 17

    iPhone 11 - from Carriers

    ATT 64GB 128GB 256GB
    White Dec 23, 2019 Dec 19, 2019 Dec 19, 2019
    Black Dec 19, 2019 Dec 19, 2019 Dec 23, 2019
    Green Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Yellow Jan 6, 2020 Dec 19, 2019 Jan 20, 2020
    Purple Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    (PRODUCT)Red Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Sprint 64GB 128GB 256GB
    White In Stock In Stock In Stock
    Black In Stock In Stock In Stock
    Green In Stock In Stock In Stock
    Yellow In Stock In Stock In Stock
    Purple In Stock In Stock 12/27 - 1/3
    (PRODUCT)Red In Stock In Stock In Stock
    T-Mobile 64GB 128GB 256GB
    White Dec 18 - Dec-20 Dec 24 - Dec-30 Dec 16 - Dec-18
    Black Dec 15 - Dec-17 Dec 15 - Dec-17 Jan 07 - Jan-21
    Green Dec 16 - Dec-18 Jan 07 - Jan-21 Jan 07 - Jan-21
    Yellow Dec 15 - Dec-17 Dec 18 - Dec-20 Dec 23 - Dec-30
    Purple Dec 24 - Dec-30 Dec 23 - Dec-30 Jan 07 - Jan-21
    (PRODUCT)Red Dec 15 - Dec-17 Dec 15 - Dec-17 Jan 07 - Jan-21
    Verizon 64GB 128GB 256GB
    White Available Available Available
    Black Available Available Available
    Green Available Available Available
    Yellow Available Available Available
    Purple Available Available Available
    (PRODUCT)Red Available Available Available

    iPhone 11 Pro - from Carriers

    ATT 64GB 256GB 512GB
    Space Gray Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Silver Dec 19, 2019 Dec 19, 2019 Jan 20, 2020
    Midnight Green Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Gold Dec 19, 2019 Dec 19, 2019 Jan 20, 2020
    Sprint 64GB 256GB 512GB
    Space Gray In Stock In Stock In Stock
    Silver In Stock In Stock In Stock
    Midnight Green In Stock In Stock In Stock
    Gold In Stock In Stock In Stock
    T-Mobile 64GB 256GB 512GB
    Space Gray Dec 15 - Dec-17 Dec 23 - Dec-30 Dec 15 - Dec-17
    Silver Dec 16 - Dec-18 Jan 07 - Jan-21 Dec 15 - Dec-17
    Midnight Green Dec 15 - Dec-17 Jan 07 - Jan-21 Dec 15 - Dec-17
    Gold Dec 15 - Dec-17 Jan 07 - Jan-21 Dec 15 - Dec-17
    Verizon 64GB 256GB 512GB
    Space Gray Available Available Available
    Silver Available Available Available
    Midnight Green Available Available Available
    Gold Available Available Available

    iPhone 11 Pro Max - from Carriers

    ATT 64GB 256GB 512GB
    Space Gray Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Silver Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Midnight Green Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Gold Dec 19, 2019 Dec 19, 2019 Dec 19, 2019
    Sprint 64GB 256GB 512GB
    Space Gray In Stock In Stock In Stock
    Silver In Stock In Stock In Stock
    Midnight Green In Stock In Stock In Stock
    Gold In Stock In Stock In Stock
    T-Mobile 64GB 256GB 512GB
    Space Gray Dec 15 - Dec-17 Dec 23 - Dec-30 Jan 07 - Jan-21
    Silver Dec 15 - Dec-17 Jan 07 - Jan-21 Dec 15 - Dec-17
    Midnight Green Dec 15 - Dec-17 Dec 23 - Dec-30 Dec 15 - Dec-17
    Gold Dec 15 - Dec-17 Jan 07 - Jan-21 Dec 16 - Dec-18
    Verizon 64GB 256GB 512GB
    Space Gray Available Available Available
    Silver Available Available Available
    Midnight Green Available Available Available
    Gold Available Available Available
    Tags: