iPhone App Rejected By Apple saying analytics used - iphone

One of my iphone app rejected by apple. Here is reason from resolution center.
We found that your app uses analytics software to collect and send
device data to a third party, which is not in compliance with the iOS
Developer Program License Agreement.
3.3.9 You and Your Applications may not collect user or device data without prior user consent, and then only to provide a service or
function that is directly relevant to the use of the Application, or
to serve advertising. You may not use analytics software in Your
Application to collect and send device data to a third party.
Specifically, your application is transmitting the user's MAC address
without their prior consent. It would be appropriate to either remove
this behavior from your application or obtain the user's consent."
Not used any analytics sdk. Only 3rd party sdk used are - Chartboost, Revmob, facebook-ios-sdk, Nextpeer. How can I resolve this problem? how can find which sdk has problem ?

I got reply from apple for same problem. Apple indicated its nextpeer multiplayer sdk issue. User device info is collected in the game. Easy fix is to indicate it in EULA.
See these screenshot.

How are you? This issue most likely wasn't caused by us here at Nextpeer but I will happily look into this for you on our end. If you could please email me (alexander#nextpeer.com) with what SDK version you used during this rejection and your bundle ID, I will check it out for you.
Look forward to hearing back from you.

Nextpeer solved this issue in the 1.5.2 release of the SDK. There is no longer any need to make an addition to the EULA.
How do I know? Because I emailed alexmussafi and asked him :) But he's not found time to update the answer and I wanted to save anyone else the trouble.

Related

Passbook (Wallet) with ibeacons

I bought few iBeacons today and started playing with ios SDK.
I read in one of the apple forum that we can build and distribute a Apple Passbook pass to users and it can show notification to user when it detects a specific iBeacon.(https://discussions.apple.com/thread/6028034?tstart=0) This feature don't need any app to be installed on the user mobile device. Is this a correct info?
I have been searching the web for exact reference and unfortunately cant find anything very specific to this except sites like passkit.com who promises to build such passbook pass and distribute for you, but since its paid can't try.
Any help/info/reference will be really helpful which can help be build from scratch.
TIA.
Yes, it is possible to send a notification about a Passbook pass to an iOS user when they come near a beacon. They do not need a special app to do this (just the Passbook app, which is pre-installed). The user, however, does need to have installed the pass just like any other Passbook pass.
This works by embedding beacon identifier information in the pass itself. When the Passbook app installs the pass. It starts looking for that beacon in the background. When the device comes across it, the Passbook app sends a notification to the user.
My colleague wrote a detailed blog post about how to do this here. No payment required!

Conversion tracking for Mac App Store

Google and Facebook offer SDK for conversion tracking on iOS (from online ads to app installs):
Google: https://developers.google.com/app-conversion-tracking/
Facebook: https://developers.facebook.com/docs/ads-for-apps/mobile-app-ads
However, I could not find equivalent SDKs for the Mac App Store.
Are there equivalent SDKs for the Mac AppStore?
If not, what's the best way to measure conversion rate for installs from the Mac App Store?
The approach that most people use for this is to place a tracking pixel into their app.
On the first run of the app (note this is not the same as install as someone might install but never run the app), the tracking pixel fires and you can then just count the fires of that pixel.
Attribution (i.e. what caused that install) is difficult as usual - there are third parties who exist who can act as an intermediary that can do this, e.g. HasOffers or Kochava are two that spring to mind.
N.B. for Android installs from the Play Store, this "just works" with AdWords.
At present Apple doesn't provide conversion tracking. Later this year it will. It's unclear to me how you think an SDK would be involved; it won't be.
For anyone else researching this (there are surprisingly few results for this topic on Google) you should focus on tracking conversions with App Store by Apple. Make sure to use UTMs to see which campaigns are performing.

Can't update iPhone apps

After making an update to an iPad app I released some time ago, I've been getting reports that people are unable to actually update the app without deleting and re-installing. However, as far as I know, nothing in the update should be causing this. (All the update deals with is letting people email PDF documents, nothing major.) When people attempt to update, they're asked for their iTunes password, but after entering it, it merely goes back to the update screen and nothing happens. Additionally, it would seem that this only happens with my app, the people in question aren't having any issues with the other various apps on the App Store. Does anyone know what might be causing this and how I could fix it?
Thanks in advance!
(Also, if it matters, the app is a custom B2B app, the general public can't purchase it.)
I'm removing the text of my answer because it's so inaccurate it's embarrassing. I mistook "B2B" for "Enterprise" and answered based off of that. To make up for it, I'll look into the problem a bit more and if I find anything I will edit this answer accordingly.
Edit:
Okay, I can see why you put a bounty for this question on SO; there's not really any data on a problem like this anywhere. Frankly, there's not much available information on B2B in general. I'll post what I found anyway, in case it can be of any help to you.
I found the details reason behind Maggie's question, there. Per Editing and Updating App Information:
Updates keep the same Apple ID and bundle ID, which means they are
associated with your first version and free to your customers
Also, apparently, "You can't change the CFBundleIdentifier of a released app if you want to release updates for it, the App Store will automatically reject it when you upload." which is something I can vouch for, having experienced this with a normal app. I do know that for a B2B app you do have to submit it to Apple for review, but I can't tell from the documentation I found if you need to actually submit it to the App Store, so it may not go through the various checks that normal apps go through, so this could be your problem.
Aside from that, according to the VPP guide, if your customers are installing the apps on the devices with Apple Configurator (broken right now, per app store reviews) the updates also have to be done with the Configurator. You haven't said that Configurator was involved, but I did find this tidbit.
• Use Apple Configurator to install apps on new or supervised devices.
Apple Configurator on a Mac makes it easy to mass configure and deploy
devices that are centrally controlled. Redemption code spreadsheets
acquired through the Volume Purchase Program can be imported by Apple
Configurator, tracking the number of apps installed on each device. To
update deployed apps using Apple Configurator, you must reconnect to
the same Mac from which the apps were installed. Learn more at
itunes.apple.com/us/app/apple-configurator
Anyway, good luck. Wish I could be more help.
What you are describing (assuming that it is accurate) would certainly be a bug on Apple's side. If users are trying to update the app and the update is not being processed, then in one way or another that is a bug that Apple needs to address. Nothing that you do as a developer should be able to cause that situation to happen. I would suggest contacting Apple and possibly filing a bug report.
It seems that apple wants you to develop the Iphone apps in the latest build. Sometimes this cause issues between realeases (diferent versions of Itunes, OSX, IOS, etc) when you try to update your apps.
Try to publish the app in the latest version of xcode.
That happens a lot in iphone development testing.
Hope this help.
When updating an app, iOS looks for the bundleId and if there is another app with the same bundleId, it updates the app with the highest version number. Maybe the version number is not set correctly or maybe people have issues because an other app (from the AppStore or an other B2B app) have the same bundleID but a higher version number.
I'm by far not an iPhone expert, but it seems something related might have been fixed in iOS 6.0.1.
Fixes a bug that prevents iPhone 5 from installing software updates
wirelessly over the air

An iOS App how to find all other application on the iPhone?

Bump, Chomp & Appsfire all can list other application on the iPhone, how to do it?
By using Google I found this link quite helpful, it says basically there are two ways to find if certain apps are installed without jailbreaking your device:
checking if a specific URL scheme is supported by the device => canOpenUrl:
comparing the devices currently running processes to known app executable names => sysctl()
Short answer, you can't.
Longer answer you can't without violating the dev agreement and risking app rejection.
There are two methods of doing this (on a non-jailbroken phone):
Check to see if custom URL schemes that are known to be used by certain apps are registered as described in http://www.iphonedevsdk.com/forum/iphone-sdk-development/37103-finding-out-what-apps-installed.html (this allows you to check for certain known apps, not get a list of all installed apps.
The way appsfire does with a desktop 'companion' app, that grabs this info from your iTunes and sends it to their server. (See this article as to why the appsfire developer pulled his app because apple wouldn't approve an update anymore).
Sorry I couldn't be of more help but that's apple!

Analytics for iPhone apps

I was wondering what are some good analytics plugins for the iPhone SDK?
Would it be wise to use Google Analytics and have that hook up to the app?
What are my options? Any particular strategies?
Thanks
Flurry recently released an updated SDK in mid-June for 4.0 that complies with SDK EULA changes. It now no longer sends device names and OS/firmware versions.
Implementation is as simple as a line of code in your app delegate's didFinishLaunchingWithOptions, and you can optionally tag specific events as well and add location tracking.
According to Apple : "Device Data may not be provided or disclosed to a third party without Apple’s prior written consent. Accordingly, the use of third party software in Your Application to collect and send Device Data to a third party for processing or analysis is expressly prohibited…"
Here is a Tutorial ,If you want to integrate Google Analytics inside your application.
I haven't updated myself with the very very latest developer terms and conditions, but the last set I read (attached to the iPhone SDK 4) stated that you weren't allowed to send device data to 3rd parties for analysis or collection. So be careful when considering your choice.
I heard rumours that apps containing Flurry Analytics are being rejected from the App Store. This would seem to tie in with the small outburst Steve Jobs had during the All Things D interview, when he slated Flurry for collecting iPhone 4 and iPad data before the devices were released.
However, contradictory to that rumour - my own apps contain Flurry Analytics and they have had a few updates approved since iOS4 was released to the public. So perhaps the rumour doesn't hold any water? I Also heard that Flurry had updated their SDK and removed the code that collects device data.
Just to be clear, only device data was prohibited from being sent to 3rd parties. App usage, and other data may be collected and sent to third parties. Device data would boil down to things like hardware model numbers, UDIDs and software version information, etc.
So just be careful in considering your analytics choices. If you want to see device data, you'll have to collect it and store it yourself using a private web service or some other method.