Problem IPv6 ios

Did you change the UIApplicationExitsOnSuspend to false? 

How much work are you doing in your main.lua before the user gets to see the first screen?

Rob

Yes, I did change to false but it still crashed.

I’m using composer and my main.lua is only transitioning to another scene.

display.setStatusBar(display.HiddenStatusBar)

local composer = require(“composer”)
local scene = composer.newScene()
composer.gotoScene(“dbsetup”)

function scene:create( event )
   local sceneGroup = self.view

end

function scene:show( event )
   local sceneGroup = self.view
   local phase = event.phase
 
   if ( phase == “will” ) then
       
      – Called when the scene is still off screen (but is about to come on screen).
   elseif ( phase == “did” ) then
        
           --composer.gotoScene( “logo” )
      – Called when the scene is now on screen.
      – Insert code here to make the scene come alive.
      – Example: start timers, begin animation, play audio, etc.
   end
end

– “scene:hide()”
function scene:hide( event )
 
   local sceneGroup = self.view
   local phase = event.phase
 
   if ( phase == “will” ) then
      – Called when the scene is on screen (but is about to go off screen).
      – Insert code here to “pause” the scene.
      – Example: stop timers, stop animation, stop audio, etc.
   elseif ( phase == “did” ) then
      – Called immediately after scene goes off screen.
   end
end
 
– “scene:destroy()”
function scene:destroy( event )
 
   local sceneGroup = self.view
 
   – Called prior to the removal of scene’s view (“sceneGroup”).
   – Insert code here to clean up the scene.
   – Example: remove display objects, save state, etc.
end

– Listener setup
scene:addEventListener( “create”, scene )
scene:addEventListener( “show”, scene )
scene:addEventListener( “hide”, scene )
scene:addEventListener( “destroy”, scene )

return scene

 

Is all of that in main.lua? 

You don’t need any of this:
 

function scene:create( event ) local sceneGroup = self.view end function scene:show( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then -- Called when the scene is still off screen (but is about to come on screen). elseif ( phase == "did" ) then --composer.gotoScene( "logo" ) -- Called when the scene is now on screen. -- Insert code here to make the scene come alive. -- Example: start timers, begin animation, play audio, etc. end end -- "scene:hide()" function scene:hide( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then -- Called when the scene is on screen (but is about to go off screen). -- Insert code here to "pause" the scene. -- Example: stop timers, stop animation, stop audio, etc. elseif ( phase == "did" ) then -- Called immediately after scene goes off screen. end end -- "scene:destroy()" function scene:destroy( event ) local sceneGroup = self.view -- Called prior to the removal of scene's view ("sceneGroup"). -- Insert code here to clean up the scene. -- Example: remove display objects, save state, etc. end -- Listener setup scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) return scene

in main.lua and that could be contributing to the problem.

Rob

Thanks Rob, I have removed all the other lines as you’ve suggested and create a new build using the latest daily build but I am experiencing the same thing. Stretched default screen that hangs for like 10 seconds that it just crashes and closes itself.

Would you mind zipping up your project and sharing it with me rob AT coronalabs DOT com?

Rob

Thanks Rob, I have sent you my project.

My English is not very good. I apologize.

The thing is, I have the same problem. When I upload a new app Apple returns it with an IPv6 problem.

I have read all forum but I have not found how to solve it.

I would appreciate some help.

Are you saying Apple is rejecting you because you’re not using IPv6? If so that may not be the reason. That is a pre-recorded message that everyone gets when your app crashes. Ask them for a console log of the run to see if you’re getting a run time error.

Rob

Sorry for the delay Rob, at the beginning of my app charge a 55mb audio, there the app does not respond in 8 or 10 seconds. And apple assumes that it is for connectivity, but I think it’s actually because of the audio load.

There is another way of loading it that does not weigh so much.

If you have a large audio file, consider using audio.loadStream() instead of audio.loadSound(). They do the same thing except that .loadSounds() blocks until it completes. .loadStream() loads in the background and returns as soon as it has enough of the file to begin playing the sound.

The other thing you can do is start some type of loading progress bar/busy wait spinner. 

Rob

This is a generic message Apple sends out when your app fails for any reason. They turn off IPv4 networking, run your app, if it dies/gives them a black screen, they assume you’re making IPv4 calls. I wish Apple would automatically provide you a console log run of the test device. Since iOS 10 has come around, the logs are polluted with other messages making your messages hard to find and follow.

That said, you can always ask them provide you with a console log from their test run and that might help you narrow down the problem.

What all real iOS devices did you test on?

Did you test using their testFlight system or just developer/adHoc builds?

Rob

I found this thread after 4 app rejections now from Apple citing the IPV6 app rejection notice. We have tested our app extensively including the IAP with sandbox account, and we have Version 2017.3103 (2017.6.30) of Corona.

I’m at a loss. They keep saying the app isn’t IPV6 compliant. With 10% adoption of IPV6 in the globe (and most of them being providers), I can’t imagine why they are enforcing this so early.

Any help here would be greatly appreciated. I’ve reached a new record of 4 rejections after being an iOS developer for 9 years.

The Apple message is most likely a red herring. It’s a generic message they send when your app crashes on start up. It’s not likely IPv6 at all. 

You should ask them for the console log of the run and see if you can find why you’re crashing. You can also upload to iTunes and use TestFlight to get some other developers to download and run your app while tethered and see if they can see any errors using Xcode’s device log viewer.

One thing many developers skip over is making sure to delete the app from the device before testing and you have data left over from previous installs. 

Rob

Hey Rob,

Thanks for chiming in. Let me add some more significant details I might have left out.

  1. Yes, we did uninstall every time during testing.

  2. When we test on IPV4, everything works as it should.

  3. Apple is only testing with IPV6, no IP4 at all (wifi) (per their notice to me).

  4. I have asked for the crash logs.

So the pointer for me is IPV6 itself. The IAP works with IPV4 (including call backs).

Other than putting my Mac on the LAN, turning on Internet sharing for IPV6 only - are there any other checks you recommend when using the Corona SDK?

When asking Apple for the crash report or even a stack trace, here’s their response.

None of which I’m able to duplicate using multiple test devices, arg!

Hello,

Thank you for your response. You app was presenting bugs, not crashing on launch nor crashing after a particular action. 

Best regards,

App Store Review

I too got an app rejected because the InApp-Purchase is not working with iPv6.

Here is the info I got:

Purchasing is not working running iOS 10.2.1 on Wi-Fi connected to an IPv6 network.

Apps must support IPv6.

I tested the purchasing (not with 10.2.1 yet) and it is working fine. I can’t test this with IPv6 because I don’t know how.

Are there any known issues regarding the new iOS and the IPv6 network?

Here is a link: https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1

I’m unaware of any IPv6 issues that we have. Apple tends to blame anything not working on using IPv4 networking (like connecting to an IP address in the format of:  xxx.xxx.xxx.xxx) even when frequently its some other error causing the problem. If you have any print statements around your purchasing code and in your transaction call back function you can ask them for a console log of the run that had the error and you might be able to learn something for that.

Rob

I am also experiencing the same issue. I have read a post from this forum dated back in August 2016 that this is sometimes related to having asset file with underscore in the file name, is this still true?

I do have many asset files in my app with underscore in the file name.

@schwab, many times, Apple will try to run the app and it will crash. Apple will give you a message about making sure you test on an IPv6 network since they require everything to work on IPv6 in addition to IPv4. They assume any crash is most likely due to networking which isn’t true.

Many times iOS versions are under tested and legit bugs happen when doing a first time install on a device. It’s always good to ask Apple’s testers to send you a console log of your dump so you can look for errors and find the specific cause of your rejection.

Underscores in file names should be just fine. They are valid Unix filename characters.

Rob

@Rob,

The Apple review team has attached a crash log which doesn’t seems to show specific error or I simply don’t know how to read it.

Exception Type: EXC\_CRASH (SIGKILL) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC\_CORPSE\_NOTIFY Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d Triggered by Thread: 0

Would you know what the Namespace SPRINGBOARD mean?