Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
NoDamage
Dec 2, 2000

Ender.uNF posted:

Anyone have experience localizing an app and trying to duplicate screenshots for all the different languages?

For almost all my views you could, in theory, just take a somewhat similar screenshot and overlay the changed text but that's a lot of photoshop. Otherwise it will take a bunch of fiddling and switching of my simulator between languages to get them done. I wish there was a demo script system that could do the work.

Cutting and pasting all the descriptions and in-app purchase stuff in iTC has been almost as much work as actual localization. Is it any surprise people don't bother?

edit: gently caress me, I just realized I need to do this for the free version and iPad too so that's 5*2*2*5 = 100 screenshot files I need to create. AKSDJFA
Yeah, it's a massive pain in the rear end. We just recently localized our app into 15 different languages, across Mac/iPhone/iPad. Took forever to take all of the screenshots for each platform and get them all uploaded into iTunes Connect.

It doesn't help that iTunes Connect's interface is pretty awful for this kind of stuff (e.g. it doesn't actually thumbnail your uploaded screenshots so they take forever to load).

If I ever have to do it again I would be tempted to write some code that automatically took screenshots of the screens I cared about (using UIGetScreenImage() if that's still available, or https://developer.apple.com/library/ios/#qa/qa2010/qa1703.html), and then paying someone on eLance/oDesk a few bucks an hour to do the actual uploading on iTunes Connect.

Adbot
ADBOT LOVES YOU

ultramiraculous
Nov 12, 2003

"No..."
Grimey Drawer

NoDamage posted:

Yeah, it's a massive pain in the rear end. We just recently localized our app into 15 different languages, across Mac/iPhone/iPad. Took forever to take all of the screenshots for each platform and get them all uploaded into iTunes Connect.

It doesn't help that iTunes Connect's interface is pretty awful for this kind of stuff (e.g. it doesn't actually thumbnail your uploaded screenshots so they take forever to load).

If I ever have to do it again I would be tempted to write some code that automatically took screenshots of the screens I cared about (using UIGetScreenImage() if that's still available, or https://developer.apple.com/library/ios/#qa/qa2010/qa1703.html), and then paying someone on eLance/oDesk a few bucks an hour to do the actual uploading on iTunes Connect.

I've used UIAutomation to do screen captures in the past. It's a Javascript-y language you can use to automate an app in Instruments. Basically you can record the steps to get into a state, and have the UIATarget take a screenshot. It's a little irritating to get going, but it'll probably save you enough time to be worth it. You'll free up a bunch of time to deal with iTunes Connect :ohdear:

thegasman2000
Feb 12, 2005
Update my TFLC log? BOLLOCKS!
/
:backtowork:

NoDamage posted:

paying someone on eLance/oDesk a few bucks an hour

Do this. The time it takes to get an app in one language is enough forget multiples! Whats your billable hour rate? I bet its more than you can get someone else to di it for you.

NoDamage
Dec 2, 2000

ultramiraculous posted:

I've used UIAutomation to do screen captures in the past. It's a Javascript-y language you can use to automate an app in Instruments. Basically you can record the steps to get into a state, and have the UIATarget take a screenshot. It's a little irritating to get going, but it'll probably save you enough time to be worth it. You'll free up a bunch of time to deal with iTunes Connect :ohdear:
Wow, I had no idea this existed. Looks pretty awesome.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice

NoDamage posted:

Yeah, it's a massive pain in the rear end. We just recently localized our app into 15 different languages, across Mac/iPhone/iPad. Took forever to take all of the screenshots for each platform and get them all uploaded into iTunes Connect.

It doesn't help that iTunes Connect's interface is pretty awful for this kind of stuff (e.g. it doesn't actually thumbnail your uploaded screenshots so they take forever to load).

If I ever have to do it again I would be tempted to write some code that automatically took screenshots of the screens I cared about (using UIGetScreenImage() if that's still available, or https://developer.apple.com/library/ios/#qa/qa2010/qa1703.html), and then paying someone on eLance/oDesk a few bucks an hour to do the actual uploading on iTunes Connect.

It does work... If you do it correctly you can get retina screenshots too. This sounds like a smashing idea! I was also unaware of the instruments automation, I am going to check that out too.



quote:

Hey how has your SA ad campaign been going?

It worked really well for me but that may be due to my category being thinly traded so the additional SA traffic has bumped my rankings thus leading to outside-SA sales. I'm not so sure it would have the same benefit for a mega-category (like games.)

It has been very fulfilling... I get emails/PMs/reports from people who say they can finally get a good nights sleep or they use it all the time. That means more to me than the money (though money helps).

duck monster
Dec 15, 2004

Doc Block posted:

My knowledge of that whole scene is limited, but doesn't most of the jailbreaking work target the latest iOS version?

I don't envy people who have to support corporate/enterprise users.

Depends. But the latest versions get patched ,and thats the critical difference. Apple are setting themselves up to getting hosed by microsoft , because if microsoft are smart they can just come out and offer 5 year security patch guarantees and they will win over a tonne of enterprise boredom suits just like that.

Gotta think like a suit here folks, not like a turtleneck, when it comes to the enterprise.

duck monster
Dec 15, 2004

Man. The facebook ios API is a total loving mess. Almost all the results return to the same god drat callback with a dictionary and nothing to indicate what sort of result it is, no magic numbers, no flags no loving nothing , just a god drat unaddressed envelope with a set of fields that are inconsistent due to end user privacy settings. And as best as I can tell, seemingly if a call fails, it just passes in the previous result making trying to put together a state machine to track what the gently caress the API is up to a total god drat horrorshow.

Who creates this poo poo, and why are they not loving unemployed yet?

:suicide:

e: Oooohhhhhh I see I can set other delegates. Riiight, THAT makes more sense.

duck monster fucked around with this message at 06:52 on Jun 26, 2012

Books On Tape
Dec 26, 2003

Future of the franchise
I have a question regarding server space for an iOS app. My first app is a game and I'd like to have some sort of simple leaderboard data show in the app itself. What kind of server space/storage am I looking at? I know a lot of it depends on how popular the app is, but I honestly have no idea where to start. Am I better off just using GameCenter?

mewse
May 2, 2006

jerkstore77 posted:

I have a question regarding server space for an iOS app. My first app is a game and I'd like to have some sort of simple leaderboard data show in the app itself. What kind of server space/storage am I looking at? I know a lot of it depends on how popular the app is, but I honestly have no idea where to start. Am I better off just using GameCenter?

Yeah I thought GameCenter did high score tracking and stuff..

LP0 ON FIRE
Jan 25, 2006

beep boop
I'm using ColorBGView and calling methods inside of it to make gradients. But if I attach two to my layer, it overlaps everything else I attach afterward, and I don't understand why.

code:
        CAGradientLayer *bgLayer = [ColorBGView pinkSky1];
        bgLayer.frame = CGRectMake(0, 0, 1024, 768);
        [viewController.view.layer insertSublayer:bgLayer atIndex:0];

    //If I insert this sublayer (even at a lower index) 
    //it overlaps everything I attach afterward

        CAGradientLayer *bgLayer2 = [ColorBGView darkCave];
        bgLayer2.frame = CGRectMake(0, 0, 1024, 768);
        [viewController.view.layer insertSublayer:bgLayer2 atIndex:-10];    

        // add custom view

        parallaxView = [[ParallaxView alloc] init];
        parallaxView.frame = CGRectMake(0, 0, 1024, 768);
        [viewController.view insertSubview:parallaxView atIndex:1];

        [parallaxView release];
I've tried -insertSublayer:below: which makes the first sublayer be on top of everything.

LP0 ON FIRE fucked around with this message at 17:29 on Jun 26, 2012

Books On Tape
Dec 26, 2003

Future of the franchise

mewse posted:

Yeah I thought GameCenter did high score tracking and stuff..

It does, but from what research I've done so far, it looks like it's easily hackable, and I can't find anything on whether or not you can display the leaderboards from within your app or if you're forced to use the GC interface.

xgalaxy
Jan 27, 2004
i write code

jerkstore77 posted:

It does, but from what research I've done so far, it looks like it's easily hackable, and I can't find anything on whether or not you can display the leaderboards from within your app or if you're forced to use the GC interface.

IMO just use the Amazon services for this.
It's free for a year or something like that, it's cheap, you can grow the service as you need, and if you use multiple services you get discounts which make it even more cheap.

http://aws.amazon.com/

ultramiraculous
Nov 12, 2003

"No..."
Grimey Drawer

xgalaxy posted:

IMO just use the Amazon services for this.
It's free for a year or something like that, it's cheap, you can grow the service as you need, and if you use multiple services you get discounts which make it even more cheap.

http://aws.amazon.com/

And I'll go ahead and recommend Heroku: http://www.heroku.com/pricing

It starts at free forever, and it's built on Amazon's EC2. It's a little more straightforward to get started and doesn't require you to know quite as much about sysadmin stuff if that's not your deal.

I don't know if GC has gotten any better in terms of exploits, unfortunately. It would be nice if they at least let you set a "maximum reasonable" score or something like that, because it would help in some cases.

I would recommend you do some achievements in your game though. They're easy to set up and fun to make up names for.

Books On Tape
Dec 26, 2003

Future of the franchise
Thanks, I'll look into those.

On the topic of cheating, I'm going to have some time-based events in my game. Is there a standard way of dealing with the "set your phone's clock ahead, receive item, set clock back" exploit? On stackoverflow, the only solution I could find is to use an external server to grab the time, but I'm not sure if the web services above allow you to do that. If they do, I guess I answered my own question.

eeenmachine
Feb 2, 2004

BUY MORE CRABS

jerkstore77 posted:

Thanks, I'll look into those.

On the topic of cheating, I'm going to have some time-based events in my game. Is there a standard way of dealing with the "set your phone's clock ahead, receive item, set clock back" exploit? On stackoverflow, the only solution I could find is to use an external server to grab the time, but I'm not sure if the web services above allow you to do that. If they do, I guess I answered my own question.

Just detect the clock moving backwards, travelers won't get hit because the time zone changes not the UTC date.

lord funk
Feb 16, 2004

Bad luck after my iOS 6 beta 2 install:


Most of my apps are in perpetual 'Waiting' mode. iTunes thinks they're there, and restarting the phone doesn't jostle it. Any ideas of how to get them to wake up without deleting the app / data that goes with it?

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Last time I saw anything like that (iOS 5 beta) I just rebooted my device then it resumed the reinstalls on its own. It was really annoying but the OTA updates seemed to eliminate the problem of it thinking all apps needed to be reinstalled. I panicked same as you as all apps seemed to be stuck in limbo.

lord funk
Feb 16, 2004

In the end I just tried syncing a few more times, and the last time it did it. :confused: All back to normal.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice

NoDamage posted:

Yeah, it's a massive pain in the rear end. We just recently localized our app into 15 different languages, across Mac/iPhone/iPad. Took forever to take all of the screenshots for each platform and get them all uploaded into iTunes Connect.

It doesn't help that iTunes Connect's interface is pretty awful for this kind of stuff (e.g. it doesn't actually thumbnail your uploaded screenshots so they take forever to load).

If I ever have to do it again I would be tempted to write some code that automatically took screenshots of the screens I cared about (using UIGetScreenImage() if that's still available, or https://developer.apple.com/library/ios/#qa/qa2010/qa1703.html), and then paying someone on eLance/oDesk a few bucks an hour to do the actual uploading on iTunes Connect.

You know, I thought eLance was going so well... Posted the job, got some bids, selected a contractor with good history. I stated clearly in my job description that a Retina iPhone and the retina iPad 3 were required to do this job.

After accepting the terms and starting the job... "sorry iPad 3 just came to China, few people have them. We only have iPad 2. Can we use that instead?"

This is not going well.

I started learning iOS development because I wanted something I could do without being dragged down by other people's all-talk but no-action fuckery... Something where I wasn't constantly delayed or hampered by bullshit. *sigh*

lord funk
Feb 16, 2004

What do you all use to keep track of total app downloads? I'm probably way late to the game (it looks like iTunes connect no longer does 6 months at a time it does, but for all apps combined).

lord funk fucked around with this message at 00:23 on Jun 29, 2012

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Doh, I'm a fool... The wordcraft translation guys can do the screenshots. I should have asked them in the beginning.

I use appfigures.com; I really like their interface and it does the iTC sync automatically so I have rankings, reviews, etc going all the way back. It costs five bucks a month but it is totally worth it.
Edit: it will also send daily summary emails with your totals and such.

Simulated fucked around with this message at 01:25 on Jun 29, 2012

Glimm
Jul 27, 2005

Time is only gonna pass you by

lord funk posted:

What do you all use to keep track of total app downloads? I'm probably way late to the game (it looks like iTunes connect no longer does 6 months at a time it does, but for all apps combined).

We track a rough count by using Flurry analytics and sending an event the first time the app is run.

samiamwork
Dec 23, 2006

LP0 ON FIRE posted:

I'm using ColorBGView and calling methods inside of it to make gradients. But if I attach two to my layer, it overlaps everything else I attach afterward, and I don't understand why.

code:
        ...
I've tried -insertSublayer:below: which makes the first sublayer be on top of everything.

I don't know how subviews interact with sublayers hierarchically, but have you tried setting the zPosition property of your sublayers/view layers instead of inserting them at specific indices?

Kallikrates
Jul 7, 2002
Pro Lurker
Shot in the dark, but does anyone have any experience with excessive drawing when printing a scaled view?

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Is it just me or is CoreData on iCloud useless? (If this guy is correct)

The short version is that if the user signs out of iCloud, turns off iCloud sync, etc and a device misses transaction log changes those changes are permanently lost and iCloud will never resend them to that device.

If you allow local changes while not hooked up to iCloud then you are on your own and have to do manual merging... You'd have to have a copy of the data stored locally, then figure out what changes to push to iCloud when it comes back. There are a whole host of issues here.... plus if the user already has your app installed (say on their iPhone and iPad) you are in this bucket on day one - you have two local stores and you cannot seed them both to iCloud, so get ready for some PITA manual processing.

Any changes that result in validation failures (even temporary ones) cause transaction logs to fail to import. This can (and does) permanently disable iCloud syncing with no way to recover, nor can you hook into this process to figure out how to resolve the conflict. The more inter-dependent your object graph, the worse this gets. You can trigger this just via normal user interactions if you have things like required relationships.

The only way to fix a jacked up container is to delete it from all devices except one (including deleting it from iCloud entirely), then have that one device recreate the iCloud container and seed it from scratch. If a device has ever sync'd from iCloud before, you can't offer the user a choice to use iCloud or local data because iCloud won't re-download missing transaction logs. The link I posted gives one possible approach to this so other devices can recognize that the iCloud store has been reset and react to it (basically automatically clearing the ubiquity container on all devices except one and recreating it).

This just feels like a half-baked feature to me. It assumes that the CoreData store will always be iCloud-enabled, with no choice for the user and that they won't switch iCloud accounts or disable iCloud at any point in time (or your app will have to go into read-only mode when that happens). It also assumes that no changes can ever violate the constraints, since it offers no opportunity for you to even see that they were violated let alone resolve them.


This is all leading me to having to design my own syncing system... in the Storm Sim case, I am thinking the storms can be spit out as plist files so the relationships are weak and use a last-writer wins policy; I already do this for iTunes file sharing so it should be a somewhat natural extension. I also intend to write the Store Kit receipts as well so on other devices I can fire those off to my server where it can validate them with Apple and let the other copy download the item without a repurchase.

Actually that leads me to an entirely different project I'd like to attempt.... an in-app purchase system that has things like download codes, sharing IAP between different apps from the same company, kit components so you can buy a bundle or individual kit items, etc. Urban Airship is OK but they seem to have stopped giving a crap about their IAP platform and it shows.

NoDamage
Dec 2, 2000

Ender.uNF posted:

Is it just me or is CoreData on iCloud useless? (If this guy is correct)
Yup, completely and utterly. It's fine for document based apps (e.g. text editors) but is still completely broken for Core Data based apps, and I don't think that's going to change even with iOS 6. If you just take a look at the developer forums you'll see tons of people having problems getting iCloud and Core Data to work smoothly.

My recommendation is definitely to roll your own sync solution. We briefly considered adding iCloud support to Paprika when it was first announced, but I'm so glad we stuck with our custom built solution. It's not perfect but at least we have full control/visibility over it, as opposed to the black box of iCloud.

Of course, now that we are adding an Android version, iCloud syncing is basically off the table entirely anyway.

duck monster
Dec 15, 2004

Yeah I'm still a fan of good old JSON and a trusty MySQL database on the server for any remote data. Its archaic, but drat it, it works.

e: Incidently am i the only person finding that using predicate searches on NSArrays to be painfully loving slow on IOS compared to the simulator?

dereekb
Nov 7, 2010

What do you mean "error"?

ultramiraculous posted:

And I'll go ahead and recommend Heroku: http://www.heroku.com/pricing

It starts at free forever, and it's built on Amazon's EC2. It's a little more straightforward to get started and doesn't require you to know quite as much about sysadmin stuff if that's not your deal.

I don't know if GC has gotten any better in terms of exploits, unfortunately. It would be nice if they at least let you set a "maximum reasonable" score or something like that, because it would help in some cases.

I would recommend you do some achievements in your game though. They're easy to set up and fun to make up names for.

Alternatively, you can also look into Google Apps Engine, which has a free tier, has some pretty good tools, and lets you program apps in a few different languages (Java, Python, etc.).

It might be more than you need though honestly, but so far I've had good results while programming some RESTful services for iOS apps using JSON and you can use SQL, the Apps Engine Database, and/or just straight to Storage.

Pardot
Jul 25, 2001




ultramiraculous posted:

And I'll go ahead and recommend Heroku: http://www.heroku.com/pricing

It starts at free forever, and it's built on Amazon's EC2. It's a little more straightforward to get started and doesn't require you to know quite as much about sysadmin stuff if that's not your deal.


Here are some iOS + heroku resources that we've put together for those interested: https://devcenter.heroku.com/tags/ios . If anyone has any heroku questions, drop me a pm, I'm happy to help.

OHIO
Aug 15, 2005

touchin' algebra
How do you all test your apps?

I've always worked on small scale apps, where I can just go through a list of actions to make sure they work for me and ship it.

How do you test out large scale apps with high-use times, where any view might get dumped from memory?

The other factor is that I'm accepting other people's code, and I'm not smart enough to have the entire app in my head to detect if a bug fix will cause some regressions.

Does anyone here have experience with automated testing methods?

How do you balance between sufficient coverage and over-kill?

This is all specific to iPhone/iPad apps. If you have a baller testing process please share!

PT6A
Jan 5, 2006

Public school teachers are callous dictators who won't lift a finger to stop children from peeing in my plane
My personal advice would be to use unit tests as much as possible for anything which isn't involved with the UI, and otherwise maintain a list of tests and expected outcomes for testing the UI (which I suppose could be considered non-automated unit testing).

I'm not sure if there's really anything iOS-specific in that advice, mind you.

lord funk
Feb 16, 2004

I have yet to work with unit tests. Any good tutorials to get started?

Personally, 90% of the bugs in my apps come from the UI. It's vital to use the hell out of the app, on the actual device, for a prolonged period of time. Multi-touch interactions alone cause all sorts of crazy possibilities, so early on I attack the app like a monkey to see what I can break. This probably sounds ridiculous to some of you more experienced programmers...

Jehde
Apr 21, 2010

I'm trying to import a jpg image and draw it into a scroll view using Quartz 2D. Before I just had a giant 8000x6000 image, but that proved to be an issue to load, so I broke up the image into 48 1000x1000 image tiles and wrote a block of code like this to draw it out:

Objective-C code:
UIImage *myImage1 = [UIImage imageNamed:@"tile1.jpg"];
CGPoint imagePoint1 = CGPointMake(0, 0);
[myImage1 drawAtPoint:imagePoint1];

UIImage *myImage2 = [UIImage imageNamed:@"tile2.jpg"];
CGPoint imagePoint2 = CGPointMake(1000, 0);
[myImage2 drawAtPoint:imagePoint2];

UIImage *myImage3 = [UIImage imageNamed:@"tile3.jpg"];
CGPoint imagePoint3 = CGPointMake(2000, 0);
[myImage3 drawAtPoint:imagePoint3];

//etc
But the result is it only shows a corner (as big as the scroll view frame) of the first tile, and if you try to scroll it around, it just shows the background anytime you scroll anywhere out of the initial frame. How can I get the whole grid of the image tiles into the scroll view?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Jehde posted:

How can I get the whole grid of the image tiles into the scroll view?

Take a look at the WWDC 2010 video "Designing Apps with Scroll Views". It shows you how to use CATiledLayer to do exactly what you want.

duck monster
Dec 15, 2004

lord funk posted:

I have yet to work with unit tests. Any good tutorials to get started?

Personally, 90% of the bugs in my apps come from the UI. It's vital to use the hell out of the app, on the actual device, for a prolonged period of time. Multi-touch interactions alone cause all sorts of crazy possibilities, so early on I attack the app like a monkey to see what I can break. This probably sounds ridiculous to some of you more experienced programmers...

Nope. stupid-user emulation is pretty valid testing in my books.

thegasman2000
Feb 12, 2005
Update my TFLC log? BOLLOCKS!
/
:backtowork:
Objective C Dev role posted in goons for hire thread.

shodanjr_gr
Nov 20, 2007
So has apple decided to update their OpenGL support in Mountain Lion or is it still stuck at < 3.0?

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
10.7 already supports 3.2.

ultramiraculous
Nov 12, 2003

"No..."
Grimey Drawer

shodanjr_gr posted:

So has apple decided to update their OpenGL support in Mountain Lion or is it still stuck at < 3.0?

Isn't Lion at OpenGL 3.2? I tried running glGetString(GL_VERSION) in Mountain Lion and 2.1 came back, which doesn't seem right...not really the savviest in OpenGL. I remember reading theories that the hardware incompatibilities in Mountain Lion were supposed to be for machines that didn't have 3.x support on their GPUSs.

Adbot
ADBOT LOVES YOU

shodanjr_gr
Nov 20, 2007

Plorkyeran posted:

10.7 already supports 3.2.

Hm...Maybe that's the case for the core spec but last time I checked, it didn't support extensions like tessellation shaders or Shader language 1.5... I'm wondering if that changed in ML...

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply