Hi @spowell83,
Thanks for helping track this down. This is some kind of internal error and I’ll check into it a.s.a.p.
Thanks,
Brent
Hi @spowell83,
Thanks for helping track this down. This is some kind of internal error and I’ll check into it a.s.a.p.
Thanks,
Brent
Just out of curiosity, do you have any widget theme files in your project? Are you using or have you tried to use the open source widget library?
Rob
@Brent No problem. Can you let me know here what you find or a work around or when it might be fixed?
@Rob I actually do have the iOS theme image file in my project images folder still. I used to use it with my old UI design. But I don’t use it in any of the code currently, I’m not manually using any theme. I’m not sure what you mean about the open widget library, I’m just using what is included with Corona and is detailed in the Corona docs.
Please remove the old theme file. The current widget library is expecting values in the theme file (one named “colours”) that doesn’t exist in the copy you have. Since you don’t specify a theme, we are probably trying to default iOS 6 to use the old widget_theme_ios.lua file which when you have a copy of it in your project folder, it picks it up instead of the one from the core.
This would explain the behavior and error you are seeing.
Rob
This fixed it! Thanks Rob!
I’m guessing that your devices are all on iOS7 so that’s why you don’t get any problems, but the users experiencing errors are using iOS6. There is some mismatch while trying to find the theme for the iOS6 widgets.
Try adding this to the start of your main.lua file:
local widget = require("widget") local version = system.getInfo( "platformVersion" ) if ( string.match( version, "7.\*" ) ) then -- use iOS 7 theme widget.setTheme( "widget\_theme\_ios7" ) else -- default iOS theme widget.setTheme( "widget\_theme\_ios" ) end
Hi @spowell83,
As @corona1634 suggests, are the devices where it’s failing iOS 6.x, but it’s working on devices with 7.x?
Thanks,
Brent
I believe this might be the case. The problem is that I do not have any devices that are currently running iOS 6.1.3 and Apple, in all its glory, have decided that you are no longer allowed to downgrade your phones to earlier iOS versions.
I don’t suppose there is a way to test the theme fix without having an actual device on 6.1.3?
Hi @spowell83,
Do you actually set the widget theme anywhere in your code? I have an older iPod Touch 4th-gen which I intentionally did not upgrade to iOS7, and in recent tests of our “WidgetDemo”, the tableView worked fine. I can test it again if necessary… let me know if you’re manually setting themes, or letting it auto-detect.
Brent
Hi Brent, I’m not manually setting any themes.
Hmmm… I recall in my recent tests that setting the theme to iOS7 worked fine on the older 6.x device. Oddly though, tableViews aren’t really “themed” anyway, they merely use whatever settings you define in the constructor and the objects you insert into the rows.
Yeah, i’m at a complete loss as to what might be the issue. My tableView isn’t even that complicated in the making. It just contains a very simple display object and text object and that’s it. Of course it doesn’t help that I can’t re-create the issue myself.
I’m trying to get in contact with one of the users with the problem to see if they are running 6.1.3 on their iPhone 4. If they are then it might narrow it down to definitely being an issue with the version.
So it looks like he was running 6.1.3 as well. Any ideas of what could be the issue?
How many rows are you inserting into the tableView? Have you checked how much memory your app is using? Are you using a large image sheet?
8 rows. I’m not using an image sheet for the display images in each row because they are extremely small (The 4x version of each icon is only 224px x 224px and 4kb in size). If you meant an image sheet for the tableView widget, i’m not using one, i’m using the default widget.
What is your width and height in the config.lua file?
This is the part of the config that is for Apple:
if string.sub(system.getInfo("model"),1,4) == "iPad" then application = { content = { width = 360, height = 480, scale = "letterbox", xAlign = "center", yAlign = "center", imageSuffix = { ["@2x"] = 1.5, ["@4x"] = 3.0, }, }, SpriteHelperSettings = { imagesSubfolder = "Images", }, notification = { iphone = { types = { "badge", "sound", "alert" } } } } elseif string.sub(system.getInfo("model"),1,2) == "iP" and display.pixelHeight \> 960 then application = { content = { width = 320, height = 568, scale = "letterbox", xAlign = "center", yAlign = "center", imageSuffix = { ["@2x"] = 1.5, ["@4x"] = 3.0, }, }, SpriteHelperSettings = { imagesSubfolder = "Images", }, notification = { iphone = { types = { "badge", "sound", "alert" } } } } elseif string.sub(system.getInfo("model"),1,2) == "iP" then application = { content = { width = 320, height = 480, scale = "letterbox", xAlign = "center", yAlign = "center", imageSuffix = { ["@2x"] = 1.5, ["@4x"] = 3.0, }, }, SpriteHelperSettings = { imagesSubfolder = "Images", }, notification = { iphone = { types = { "badge", "sound", "alert" } } } }
Are your images loaded based on that “SpriteHelperSettings” folder or something? Or is that totally independent and would have no chance whatsoever of affecting this tableView?
Do you not have any “else” condition for your config? I see you do some basic device detection, but what is the “fallback” case?
Brent
Hi Brent, the Spritehelper module is only used inside apps calculator scenes (the scenes the menu options take you to). It’s not used on the menu scene, as you can see there is no reference to it at all in my menu.lua code.
And yes, I have an else condition for the config. It shouldn’t be called for an Apple device so I didn’t include it above, but here is the rest of my config, continuing from what I posted above:
elseif display.pixelHeight / display.pixelWidth \> 1.72 then application = { content = { width = 320, height = 570, scale = "letterbox", xAlign = "center", yAlign = "center", imageSuffix = { ["@2x"] = 1.5, ["@4x"] = 3.0, }, }, SpriteHelperSettings = { imagesSubfolder = "Images", }, license = { google = { key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAozSHdJRUEujwAGWx7ucEF0ajfEVbIxF66j2nv1SU5UeRm17FReg2uKZ4YVYn7vrIQwEZmdZWvfjJ/YoUpK8R7Q6AyS0gb/AlwL5871UsqrCpiQhL0wkfpkvd9swkGTlvhqNSPYYwnlZiuTx+v8JWf+wpQ9h7PSAoFVzvkUH54sG1VYa8ZkdQegHm0lynYALM3Xg3Ko/Bhu2ZJ7wYPHvEPKubF0gHahwBppJmfLyx0WBzU4PCdb53H2lT7xQO2FCacfLNc2jl1r3f4NBQQ1Kege4ndsBhPnwTYInrkz6k7FqR5hQxVKIxL5G46n5+hY2a2YNJACvxf59JtaUAYbfekQIDAQAB", policy = "serverManaged", }, }, } else application = { content = { width = 320, height = 512, scale = "letterbox", xAlign = "center", yAlign = "center", imageSuffix = { ["@2x"] = 1.5, ["@4x"] = 3.0, }, }, SpriteHelperSettings = { imagesSubfolder = "Images", }, notification = { iphone = { types = { "badge", "sound", "alert" } } }, license = { google = { key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAozSHdJRUEujwAGWx7ucEF0ajfEVbIxF66j2nv1SU5UeRm17FReg2uKZ4YVYn7vrIQwEZmdZWvfjJ/YoUpK8R7Q6AyS0gb/AlwL5871UsqrCpiQhL0wkfpkvd9swkGTlvhqNSPYYwnlZiuTx+v8JWf+wpQ9h7PSAoFVzvkUH54sG1VYa8ZkdQegHm0lynYALM3Xg3Ko/Bhu2ZJ7wYPHvEPKubF0gHahwBppJmfLyx0WBzU4PCdb53H2lT7xQO2FCacfLNc2jl1r3f4NBQQ1Kege4ndsBhPnwTYInrkz6k7FqR5hQxVKIxL5G46n5+hY2a2YNJACvxf59JtaUAYbfekQIDAQAB", policy = "serverManaged", }, }, } end
Do you know what devices these are failing on. The OS isn’t the only thing that would factor in. An iPhone 3s can run iOS 6.3.1 but might not have enough memory to run your app (as an example). We need to know more about the environment that it’s failing.
Once you know that, you can put out a forum request to see if any developers have the same hardware/OS setup or go onto the Corona BETA testers group on Facebook (https://www.facebook.com/groups/102481146589254/) and see if any one there has a match up for you. You could then add their devices to your Provisioning Portal, create a new provisioning profile including those devices and use something like TestFlight to get them a build they could test.
What you describe is likely an error happening when you either create the tableView or when you try to insert the records into it. In Lua when there is a run time error, it stops the rest of that chunk from executing, which is probably why you’re not getting anything after the Facebook button. However, without attaching a failing device to a Mac and using Xcode to peek into it’s logs its going to be hard to know. Actually there may be an option for you.
It’s possible to capture Corona’s run time errors. You could use an analytics service like Flurry to report it too. Or look at this thread:
http://forums.coronalabs.com/topic/50004-corona-advanced-logging/
It’s a debugging module that will capture messages that normally shows in the device’s console log and directs them somewhere that you can use them. I’ve not tried this. I have no idea how it works (and it’s not officially supported. ) but it might get you the intelligence you need to solve this.
Rob