Discussion Forums  >  Uncategorized

Replies: 16    Views: 773

Lucky Dogg
Lost but trying
Profile
Posts: 14
Reg: Jun 15, 2011
Lancaster, OH
140
11/12/11 06:35 AM (14 years ago)

Rejected: Non-Public API? and Too much Web use.. can someone help me?!

Here is the first issue: We found that your app uses one or more non-public APIs, which is not in compliance with the App Store Review Guidelines. The use of non-public APIs is not permissible because it can lead to a poor user experience should these APIs change. We found the following non-public API/s in your app: dataFromBase64String: If you have defined methods in your source code with the same names as the above-mentioned APIs, we suggest altering your method names so that they no longer collide with Apple's private APIs to avoid your application being flagged in future submissions. Additionally, one or more of the above-mentioned APIs may reside in a static library included with your application. If you do not have access to the library's source, you may be able to search the compiled binary using strings or otool command line tools. The strings tool can output a list of the methods that the library calls and otool -ov will output the Objective-C class structures and their defined methods. These techniques can help you narrow down where the problematic code resides. #2 Reason Specifically, we noticed that, after launching the app for the first time, a white page is displayed and users are required to tap on the refresh button. It would also be appropriate to add iOS specific UI and functionality rather than displaying just web views. If anyone can speak to any of these I would greatly appreciate it. I am thinking that maybe I over produced the app as it is more like a mini website. I was trying to make one better than any of the others I have seen for auto dealers and give the client a robust experience.... I am guessing I made it more difficult. Again any help would be greatly appreciated. Thank you
 
mutzy
Aspiring developer
Profile
Posts: 841
Reg: Nov 03, 2010
Medford, MA
9,860
like
11/12/11 07:21 AM (14 years ago)
I'm not sure about the API, but reason #2 is because you submitted your app without the most recent config.txt file. When the user first launches your app it has the default white background but when they hit the refresh button it loads the more current config.txt file on the buzztouch server. When you resubmit your binary make sure the most recent config.txt file is included in your project. It's always to test your app on your own device first so you can see these problems before sending it to iTunes. Good luck!
 
Lucky Dogg
Lost but trying
Profile
Posts: 14
Reg: Jun 15, 2011
Lancaster, OH
140
like
11/12/11 07:29 AM (14 years ago)
Thanks Mutzy I had been testing it on both my iPad and iPhone for a while but I guess I missed it when I first loaded it. Once I can figure out the API thing I will make the changes for the other and see what happens. Thanks for the info. J
 
Stobe
buzztouch Evangelist
Profile
Posts: 1528
Reg: Mar 04, 2011
Fredericksburg,...
24,680
like
11/12/11 11:43 AM (14 years ago)
With the continued rejections due to lack of iOS specific UI and functionality, I'm guessing there will soon be a nice bounty put out on the first developer to write a BT-Server plugin that satisfies Apple's reviewers.
 
tonycelestino
Aspiring developer
Profile
Posts: 213
Reg: Jun 24, 2011
Maceio
4,080
like
11/12/11 12:20 PM (14 years ago)
Are you using any plugins or any other functionality other than the ones provided by BT?! If so, they might be using this API thats causing the problem. Mutzy is right, and thats a very common mistake (I have done it twice already), make sure you have the updated config.txt on your project before submitting it to the app store. The reviewers won't update the app so all they are going to see is a blank screen with a refresh button.
 
Lucky Dogg
Lost but trying
Profile
Posts: 14
Reg: Jun 15, 2011
Lancaster, OH
140
like
11/12/11 01:01 PM (14 years ago)
My build is only using Buzztouch stuff as I have no idea how to do the plug ins. I am more than happy to share any of the stuff that I have with anyone on here to try and fix this issue. Just tell me what I need to do. I have started to look at doing a different more streamlined version of the app in the meantime.
 
tonycelestino
Aspiring developer
Profile
Posts: 213
Reg: Jun 24, 2011
Maceio
4,080
like
11/12/11 01:21 PM (14 years ago)
My suggestion is... Download a new source code for your project, run it in simulator and on a real device, test all the screens, functions and everything, if you don't see any problems try submitting it again. I'm pretty sure that all code on a regular bt project follows all of apple's guidelines.
 
Lucky Dogg
Lost but trying
Profile
Posts: 14
Reg: Jun 15, 2011
Lancaster, OH
140
like
11/12/11 01:49 PM (14 years ago)
I was thinking about doing that. I tested it for a couple of days on my own phone and ipad and had others play with it around the office to make sure there wasn't an issue. I am going to clean up a few things and then resubmit it. One other question -- I changed the photo used on my app and it shows in the buzztouch control panel but it is different on my phone. The photo I am referring to is the button to launch it. On the non-public API would having all of my buttons and pics stored on an online photo source (photobucket) and using the URL to pull it in cause this issue? Thanks everyone
 
tonycelestino
Aspiring developer
Profile
Posts: 213
Reg: Jun 24, 2011
Maceio
4,080
like
11/12/11 03:07 PM (14 years ago)
I'm a little confused here. Button to launch = App icon? The app icon should be embedded with the source code, you probably changed it after you have downloaded the code. Try downloading the source code again. About the API, thats probably not the case, I have submitted apps with images hosted on Dropbox and other servers. But you should be aware that having ALL the images hosted on the internet is not ideal, maybe you should import some of them into Xcode.
 
Lucky Dogg
Lost but trying
Profile
Posts: 14
Reg: Jun 15, 2011
Lancaster, OH
140
like
11/12/11 03:21 PM (14 years ago)
Thanks Tony... I am thinking I missed something. I initially loaded the code and then went back and changed the look of the button. So it sounds like I need to re-download the code and start all over in Xcode? I think I can do that. I will also get some of the images off of the web and into xcode. Thanks Anyone have any ideas on the non-public API though?
 
David @ buzztouch
buzztouch Evangelist
Profile
Posts: 6866
Reg: Jan 01, 2010
Monterey, CA
78,840
like
11/13/11 02:01 AM (14 years ago)
non-public API: We've heard soooo many opinions and perspective from Apple and community....but never a non-public API one. For sure they don't want BS apps that serve no purpose and we do what we can to help folks understand that but ulitmately it's up to the developer to assemble a nice looking useful app that won't just beg the Apple reviewer to reject. Back to the API.. We pay very close attention to what Apple does and doesn't allow as far as what API's are used. I didn't recal immediately where dataFromBase64String was used. I'm intimate with this code and can normally jump to any line in any file in any folder and know right where to look. This line didn't sound familiar at all. I searched the entire project using two different tools, Xcode being one of them. I cannot find anywhere in the project where that's being used. I did find in a helper folder we include to support some legacy Twitter stuff a reference to NSData+Base64 but none with the method name they mentioned. This is a long winded way to say I have no idea where to look. I'm thinking you'll need to ask the Apple reviewer to be more specific about where they 'found' this non-public API call before you'll even know where to start looking.
 
MGoBlue
Apple Fan
Profile
Posts: 980
Reg: Jun 07, 2011
Gold River, CA
10,600
like
11/13/11 08:29 AM (14 years ago)
@David - I had an app rejected this week with the same issue: 'We found the following non-public API/s in your app: dataFromBase64String.' It was a fairly bare-bones app -- rss feed, video feed, html pages and trivia quiz. I hadn't added any outside code (like push notifications.) I'm going to simply compile again and resubmit. If I get another rejection for the same reason I'll probe some more.
 
Aescleah
Code is Art
Profile
Posts: 43
Reg: Sep 15, 2011
Earth
430
like
11/13/11 09:24 AM (14 years ago)
I guess I might help you here... I spent hours going through buzztouch's code, and I think I know where this API is used. Are you guys using a share Twitter screen in your apps? If I remember well, the MGTwitterEngine that is used to share via twitter has the following file: NSData+Base64.m I'm pretty sure the API you mentioned is used there (unfortunately I can't check now). If it's the case, then I guess removing the twitter sharing part of your app should solve the problem. Besides, now that iOS 5 is out, integrating twitter using the Twitter framework is extremely easy, just a few lines of code. I wrote a plugin (v1.5) for myself that works perfectly fine, and was actually willing to integrate it to BT-server, as soon as the doc on how to do it is released. Anyway, if the problem indeed comes from there and that you want to be able to share on twitter in you app, I can give you a quick explanation on how to integrate it in iOS 5.
 
Lucky Dogg
Lost but trying
Profile
Posts: 14
Reg: Jun 15, 2011
Lancaster, OH
140
like
11/13/11 12:41 PM (14 years ago)
SHAAZAAMMMMM! Aescleah is the winner. I do have a the twitter thing that you speak of as well as one for facebook. I will go in and remove it and then maybe you could help me with the plugin. I would love to have this feature but I am a bit lost on some of the coding stuff. I am also trying to clean up some of the web stuff that they felt was of concern and figure a way to include it in the app. THANK YOU VERY MUCH TO EVERYONE ON HERE THAT TOOK THEIR TIME TO TRY AND HELP ME!
 
MGoBlue
Apple Fan
Profile
Posts: 980
Reg: Jun 07, 2011
Gold River, CA
10,600
like
11/13/11 04:20 PM (14 years ago)
Thanks @Aescleah. I would love to see how to integrate the new Twitter API. I've used the share on twitter screen in all of my apps, but this is the first rejected. Wondering if this is because of the iOS5. Willing to give it a shot with an alternative integration. Any code/help you could provide would be greatly appreciated.
 
David @ buzztouch
buzztouch Evangelist
Profile
Posts: 6866
Reg: Jan 01, 2010
Monterey, CA
78,840
like
11/14/11 02:01 AM (14 years ago)
Share Twitter / Facebook issue - makes perfect sense!!! These two screens are pretty old (around here) and should be retired anyway. On the discussion list of the AM meeting with Parker / Stever...whoo, can't wait to remove these!! LOL As for iOS 5 and the Twitter integration, totally agree, can't wait to get a plugin made.
 
Aescleah
Code is Art
Profile
Posts: 43
Reg: Sep 15, 2011
Earth
430
like
11/20/11 02:58 AM (14 years ago)
Sorry to reply so late, I was extremelybusy recently. So, as you will see, using twitter in you app in iOS 5 couldn't be any easier. The first thing you want to do is to add the Twitter.framework to your project (in XCode, click on the target of your project, and then on the Summary tab, frameworks are at the bottom). In your .m file, you have to add this at the beginning: #import <Twitter/Twitter.h> Then, everything is done by a few lines that you can add anywhere: -(void)tweetAction { Class twClass = NSClassFromString(@TWTweetComposeViewController); if (!twClass) // Framework not available, older iOS return; if ([TWTweetComposeViewController canSendTweet]) // Check if twitter is setup and reachable { //Create the tweet sheet TWTweetComposeViewController *tweetSheet = [[TWTweetComposeViewController alloc] init]; //Customize the tweet sheet here //Add a link //Don't worry, Twitter will handle turning this into a t.co link [tweetSheet addURL:[NSURL URLWithString:@http://whateveryouwant.com]]; //Add a tweet message [tweetSheet setInitialText:@Buzztouch rules!]; //Add an image [tweetSheet addImage:[UIImage imageNamed:@anyimage.png]]; //Set a blocking handler for the tweet sheet tweetSheet.completionHandler = ^(TWTweetComposeViewControllerResult result){ [self dismissModalViewControllerAnimated:YES]; }; //Show the tweet sheet! [self presentModalViewController:tweetSheet animated:YES]; } else { // Twitter account not configured, inform the user } } And that's all you need! You can the call the method wherever you want it, changing the text, URL and image according to your needs. Hope this helps! EDIT: it looks like the forum is angry with quotation marks ^^ In the code above, everything that is after an @ should be placed between quotation marks!
 

Login + Screen Name Required to Post

pointerLogin to participate so you can start earning points. Once you're logged in (and have a screen name entered in your profile), you can subscribe to topics, follow users, and start learning how to make apps like the pros.