Apple rejected app because it's transmitting MAC Address without user permission
We had a recently developed app rejected by Apple. Here is their explanation:
We found your app does not obtain user consent before collecting the
user’s personal data, as required by theApp Store Review Guidelines.
AFNetworking with request error code 999 How to use UIButton as Toggle Button? Poor UICollectionView Scrolling Performance With UIImage How can I create a horizontal gradient background for my iOS nav bar? What is the iOS (or RubyMotion) idiom for waiting on a block that executes asynchronously? How to get a snappy UICollectionView with lots of images (50-200)?
Specifically, your applications sends the device’s MAC address without
the user’s permission. Your app also sends device Contact information
without the user’s permission.
To collect personal data with your app, you must make it clear to the
user that their personal data will be uploaded to your server and you
must obtain the user’s consent before the data is uploaded.
iOS 6 includes new keys for specifying the reason the app will access
the user’s protected data. When the access prompt is displayed, the
purpose specified in these keys is displayed in that dialog box. If
your application will be transmitting protected user data, the usage
string in your access request should clearly inform the user that
their data will be uploaded to your server if they consent.
For more information on these keys, please see the Information
Property List Key Reference.
We are using the RubyMotion toolchain, and not accessing the MAC address anywhere in our app. We think it may be one of the SDK’s or gems we are using.
source :rubygems gem 'bubble-wrap', :git => 'https://github.com/rubymotion/BubbleWrap.git' gem 'teacup' gem 'rake' gem "cocoapods", "0.13.0" gem 'motion-cocoapods', "1.1.0" gem 'motion-testflight' gem 'motion-table' gem "Parsistence" gem 'formotion' gem "ProMotion" gem "motion-addressbook"
The only external api calls are to Parse.com and to testflight, as we are using both of these SDK’s.
Parse said that they do not collect the MAC address, and Testflight doesn’t unless you specifically do so.
We are also using these Cocoa pods:
Question: Do any of these gems or Cocoapods call for the MAC address?
- How to use UIButton as Toggle Button?
- How can I create a horizontal gradient background for my iOS nav bar?
- Poor UICollectionView Scrolling Performance With UIImage
- How to get a snappy UICollectionView with lots of images (50-200)?
- AFNetworking with request error code 999
- What is the iOS (or RubyMotion) idiom for waiting on a block that executes asynchronously?
3 Solutions Collect From Internet About “Apple rejected app because it's transmitting MAC Address without user permission”
I’d imagine test flight or Parse could have the ability to retrieve the MAC address and even if they don’t send it Apple is probably just seeing that they are accessing and sending something. I assume this because it would be really bad if any of these libraries are sending an unencrypted version of the MAC address over network so maybe Apple can just see the accessing of it. Are you by any chance using an advertising network in your app?
Upgrade TestFlight to the latest SDK to fix this. From their Release Notes:
1.2.5 – May 1, 2013
Removed any access to mac address
Added AdSupport.framework requirement
If you want to sniff traffic from your device to see what’s being sent, try using Charles.
- NSDateFormatter with 24 hour times
- Storyboard Segue to Multiple Views?
- Swift: How to filter in Core Data
- Get rid of the space on the right side of a UINavigationBar
- How do you remove the Next and Prev buttons from virtual keyboard in Sencha Touch / Phonegap application
- how to apply check mark on table view in iphone using objective c?
- Using selector in Swift 3 NotificationCenter observer
- Error when with Xcode 5.0 and Rcpp (Command Line Tools ARE installed)
- Xcode 4.3.3 can't find any header files
- Why doesn't ARC free memory when using but works fine using init]?
- Batch Build and Archive of iOS apps via Terminal
- Swift 2 array of tuples not working as in swift 1
- CGColorRef causing crash
- Can I create a WatchKit app without a storyboard (entirely in code)?