10 Replies Latest reply on Jun 23, 2015 2:46 PM by Joerg Koch

    Reject from AppStore for iOS8

    Deepali Singh

      Hello Folks,

       

      We have developed Rhodes application using Rhodes 4.0.0 and Xcode 5.0.0. And have submitted the app in AppStore for approval but got a reject from Apple, they stated the reason as "Apps must follow the iOS Data Storage guidelines or they will be rejected".

       

      I have attached the mail I received from Apple.

       

      Kindly look at the feedback from Apple and suggest a solution for the same.

       

      Thanks,

      Deepali Singh

        • Re: Reject from AppStore for iOS8
          Jon Tara

          I'm surprised that's the only reason the rejected it.

           

          You will need to use Rhodes 5.0.30 and Xcode 6.1.1 or Xcode 6.2.

           

          Apps will be rejected unless built for 32/64 bit architecture, and for at least iOS 8.1. Rhodes 5.0.30 is the first version of Rhodes that builds 64-bit for iOS.

           

          Updating to Rhodes 5.0.30 should not be difficult. There are not a lot of changes from 4.0. It is much less than from 3.x. 4.x -> 5.x was mainly a "marketing" change. It doesn't indicate major change of functionality or API compatibility.

           

          I believe the specific issue you encountered was fixed long ago. If you search the forum you will find some information. There was an issue about database locations. If not fixed, then you will find posts showing how to correct it, but realize you are using an obsolete Rhodes version, and those posts may deal with what is currently a non-problem.

          1 of 1 people found this helpful
            • Re: Reject from AppStore for iOS8
              Deepali Singh

              Hi Jon,

               

              Thanks for the immediate response. I have built IPA using arm64 armv7 but I see the same directory structure, Documents folder still has apps and db folder and my db folder has master data which is around 70MB. The reason Apple gave for rejection is, they backup Document folder and the size of this folder should not cross 24MB of something.

                • Re: Reject from AppStore for iOS8
                  Jon Tara

                  Search the forum. Others have faced this problem and there is a solution.

                   

                  You will not be able to backup your database to iCloud because of it's size. Also, Apple explicitly disallows backing-up of data that can be obtained elsewhere. ("master data" implies this.)

                   

                  I don't know what you do with your "master data". Can it be split from user data?

                  • Re: Reject from AppStore for iOS8
                    Jon Tara

                    Rho has different database "partitions" you can use. These are pre-defined:

                     

                    - app

                    - user (default if synced)

                    - local (default if non-synced)

                     

                    I'm afraid the documentation is both slight and vague.

                     

                    But I think this can be used to solve your problem.

                     

                    It's been discussed in this forum with regard to App Store issues, but it was some time ago, and now I cannot locate those discussions.

                     

                    Can somebody refresh my memory?

                      • Re: Reject from AppStore for iOS8
                        Deepali Singh

                        Hi Jon,

                         

                        I am using master and local partitions in db. After installing the App, it unzips the master file and the size of db which is created under Documents folder grows to 77MB. As I understand the cause of App rejection from Apple is, they have marked Documents folder as the folder whose backup will be taken and as per their new guidelines size of Documents folder should not be more 26MB.

                         

                        What possibly we can do is alter the app root path from Documents to Library folder but this might fail for upgrade application because existing cases will still point to path which no longer exist.

                         

                        Other possibility is can we mark Document folder as DoNotBackup?

                         

                        Please see the current FWDSmart app screenshot size show in iCloud backup

                        old.jpg

                          • Re: Reject from AppStore for iOS8
                            Jon Tara

                            I knew there had been an extensive discussion of this. I was looking in the wrong place! It was a long time ago, and in a different place...

                             

                            Google Groups

                              • Re: Reject from AppStore for iOS8
                                Jon Tara

                                I reviewed that old thread.

                                 

                                It looks like all that was done there was to move all data files EXCEPT the database out of the documents directory.

                                 

                                I think you will have to use the Do Not Backup flag.

                                 

                                Note that you can create additional database partitions. But it's a murky area... Are the synced? I dunno. (I don't use RhoConnect myself anyway.)

                                 

                                So, depending on how your data is organized, it might be possible to put your "master data" in a separate DB partition. (Is it different tables than user-generated data?) Mark that partition "do not backup".

                                 

                                I think the fact that Do Not Backup was introduced in iOS 5.x is now a non-issue, since, (officially, at least) minimum Rhodes target is now 6.0.

                                  • Re: Reject from AppStore for iOS8
                                    Joerg Koch

                                    Hi,

                                     

                                    we also got rejected for the same reason:

                                     

                                    2.23 - Apps must follow the iOS Data Storage Guidelines or they will be rejected

                                    2.23 Details
                                    On launch and content download, your app stores 17.09 MB, which does not comply with the iOS Data Storage Guidelines.


                                    On startup I am seeding my database with lots of products from a 3MB JSON file. Before the initial start Settings -> General -> Usage -> Manage Storage -> App -> Documents & Data shows 4.0 KB of usage, after the initial start it is 19 MB.

                                     

                                    It seems like the database is stored in the wrong place. How can the database be placed in the correct location? For product updates I also download a file to the user folder. This should, as of the iOS Data Storage Guidelines, be stored in the tmp folder and then be deleted again. How can I access the tmp folder with Rhodes?

                                     

                                    I use Rhodes 5.0.30.

                                     

                                    Any hints on how to fix this problem?

                                     

                                    Thanks in advance for any help!

                                      • Re: Reject from AppStore for iOS8
                                        Jon Tara

                                        Do you need iCloud at all for your application? Many Rhodes apps will not have  a reason to use it, because they use RhoConnect, or use other means to back-up their data.

                                         

                                        When you create an App ID, pretty sure the default is that iCloud is disabled.

                                         

                                        Did you try this?

                                         

                                        icloud.png

                                          • Re: Reject from AppStore for iOS8
                                            Joerg Koch

                                            Yes, iCloud is disabled for my App ID.

                                             

                                            What I did now is to add:

                                             

                                            Rho::System.setDoNotBackupAttribute(Rho::Application.databaseFilePath('local'), true)


                                            to app/application.rb, to set the "do not back up" attribute for the local database, which is taking up the space. Also for another file I put in the user directory.


                                            To check if this works I used the iPhone simulator und executed:


                                            xattr /Users/<user>/Library/Developer/CoreSimulator/Devices/3C6586E2-3824-4666-88B1-5BCF69609FE3/data/Containers/Data/Application/ADF95FB8-8978-4F9A-870E-BFBD3F3D2345/Documents/db/syncdblocal.sqlite


                                            which returns:


                                            com.apple.metadata:com_apple_backup_excludeItem

                                             

                                            So, I hope with that fix the app won't be rejected again! Now, waiting time...