App tracking transparency iOS 14.5 with newrelic - ios

From iOS 14.5 it is mandatory to use ATT framework if we are sharing user info to the third party or using advertising in the app. Does it require to use of ATT if we are only using newrelic framework in our code.

As the following link points, "if the data is not linked with Third-Party Data for advertising or advertising measurement purposes", you don't need to implement AAT.
Our app was observed by Apple because we were tracking to third-party advertising libraries without implementing AAT. After removing this tracking (we didn't need it anymore) we were able to publish new versions of the app. We don't have issues for tracking to New Relic.

Related

Is the requestTrackingAuthorization only needed for IDFA?

I am getting confused if we have to show the requestTrackingAuthorization prompt or not. I thought it needs to be shown when third parties collect any data. Not I got the information from onesignal (which we use for push-notifications) that although they collect date the prompt is for their SDK not needed because they don't collect IDFA.
So in other words: Is IDFA the true reason to show the prompt and other data not?
Thanks
Andreas
Based on Apple's User Privacy and Data Use Website, it is said:
Starting with iOS 14.5, iPadOS 14.5, and tvOS 14.5, you’ll need to receive the user’s permission through the AppTrackingTransparency framework to track them or access their device’s advertising identifier. Tracking refers to the act of linking user or device data collected from your app with user or device data collected from other companies’ apps, websites, or offline properties for targeted advertising or advertising measurement purposes.
In the simple way, IDFA (Identifier for Advertisers) is required if you need to show more personalized ads. As far as I know, based on my experience I need IDFA to show more personalized ads in Google Mobile Ads SDK (AdMob). To achieve this, i have to show App Tracking prompt. When user choose to allow, the SDK can track user and show user more relevan ads. If user choose to not allow tracking, the ads are still showing but maybe less relevan and less personalized.
You have to know what data being collected by OneSignal, because in the end you have to write all them down in App Privacy section in App Store Connect if you want to upload your app to App Store. Since I have no experience using OneSignal, sorry i'm not sure what data they are collecting.
Google has good website documentation about App Tracking policy in iOS 14 to prepare iOS 14 app tracking policy. OneSignal also has Apple App Privacy Requirement.
It is said:
As OneSignal is a third-party to your app, you’ll need to ensure you are properly disclosing to your users the ways you are using OneSignal in regards to their data.
So basically, you have to disclose and write all data collected by OneSignal in App Privacy section when you want to upload your app to App Store. OneSignal collect Purchase and Product Interaction automatically by default. Maybe you use more data type, you have to disclose them.
OneSignal does not collect IDFA as of iOS SDK version 2.16.0*.
*IDFA and IDFV are no longer captured by the OneSignal iOS SDK as of version 2.16.0 and 3.0.0 beta cut 4. If you’re using an older version of the SDK prior to 2.16.0, you will need to disclose this as collected data.
According to the documentation, OneSignal doesn't require you to implement App Tracking prompt since OneSignal does not collect IDFA as of iOS SDK version 2.16.0. Yes, right! You no need to implement App Tracking, assuming that you are only using OneSignal in your app project.
But if you also use other SDK which needs IDFA to work best such as Google Mobile Ads, you need to implement it.

Does iOS 12.2 support GPS for PWA?

I'm about to build a PWA, but it requires a use of GPS. I know Android supports that, but have no clue if that will work for iOS users.
Does anyone know whether iOS 12.2(current last version) supports GPS for PWA?
100% sure you can use GPS in iOS PWA
Abilities of PWAs on iOS
With the Web Platform on iOS you can access:
Geolocation
Sensors (Magnetometer, Accelerometer, Gyroscope)
Camera
Audio output
Speech Synthesis (with headsets connected only)
Apple Pay
WebAssembly, WebRTC, WebGL as well as many other experimental
features under a flag.
Limitations
Compared with native iOS apps:
The app can store offline data and files only up to 50 Mb
If the user doesn’t use the app for a few weeks, iOS will free up the
app’s files.
No access to Bluetooth, serial, Beacons, Touch ID, Face ID, ARKit,
altimeter sensor, battery information
No background processing
No access to private information (contacts, background location) and
also no access to native social apps
No access to In App Payments
No Push Notifications, no icon badge or Siri integration
Progressive Web Apps on iOS are here - Medium
ref1
ref2
For anyone who wants a detailed review of PWAs on iOS 12.2, please check this article from Maximiliano Firtman on Medium (published on March, 26th - 2019). In short, Apple Web Kit team created a new framework for PWAs. It doesn't rely anymore on Safari. The main drawback I experienced is that updates through service worker seems not to work anymore as well as offline browsing when the page includes lazy loaded pictures.

Using firebase with WatchKit

I am attempting to use the firebase database in my watchKit app. I have developed this feature on my iPhone application but have found it difficult to do the same on my Watch app. When I attempted to import firebase into the VC class in watch app, it is creating an error no such module 'firebase'.
Is it possible to use firebase inside a watch app?
Sadly there is no Firebase support for watchOS2 and watchOS3 due to the fact that there's no support for CFNetwork in these versions of watchOS and Firebase is highly dependent on this framework. Source (thanks for the link #FrankvanPuffelen in comments).
You have two alternatives:
Use the Firebase REST API directly from your watch app.
Handle all Firebase communication from the iPhone app and use the WatchConnectivity framework to send the relevant changes to your watch app.
Depending on your exact use case, you could choose any of the two. The main advantages/disadvantages of these two are that the WatchConnectivity framework is quite limited as in when it can be used. Both of your apps needs to be running at least in the background for the WatchConenctivity framework to work. On the other hand, if you choose to use the REST API, you don't need the watch app to communicate with the iPhone counterpart, the watch app can directly get the Firebase data using network requests. However, in this scenario, the network usage will be bigger, since you will need to essentially fetch the same information both for the iPhone and watch apps.
Update for watchOS 6:
Firebase Messaging has been released with watchOS support, however, the Realtime Database along with other Firebase SDKs are still not supported. You can track the progress of them in this GitHub issue, which also contains links to the specific feature request issues for the other SDKs.
Firebase v7.9.0 added WatchOS support for realtime database.
https://firebase.google.com/support/release-notes/ios#realtime-database

How to reduce my iOS app's bundle size?

I am working on an iOS app that integrates with multiple bluetooth devices (e.g. printers and barcode scanners). Each of the devices comes with it's own version of SDK and most of them just have objective-c/swift SDKs but not javascript SDKs.
Would like to find out what is the best way to reduce the app bundle size at the same time supporting multiple devices ?
Based on my investigations,
iOS doesn't allow downloading objective-c/swift code dynamically during runtime, hence the option of downloading the SDKs after the user having installed the app is ruled out.
Would like to get a feedback on the feasibility of the below solution. Also let me know if there is a better solution.
iOS version 8+ support embedded frameworks - Have separate iOS driver
apps for each of the supported devices which just installs the device
SDK as a shared embedded framework so that the parent app can
dynamically link to the shared embedded framework if one that matches
the connected device is available, otherwise force the user to
download the respective driver app.
This question has gone unanswered for a little while, so you may have already figured this out, but no, you cannot make shared embedded frameworks on iOS. Only Apple can do that. All of the frameworks you use must be either provided by Apple or embedded inside your app.

Universal App using Health Kit

I'm working on an App which uses some new iOS 8 Health Kit (HK) features.
At present the iPad doesn't get the Health app, so can't use HK. Since the HK features are not a major part of my app functionality, I could happily leave them out of the iPad version.
My problem is that there seems no way to get a universal app running on iPad once the HK entitlements have been added, even if no use is made of HK functionality.
Does anyone know any different? Is there a way (for example) to have separate 'per device' entitlements?
Thanks!
If you want to use HealthKit, Framework Reference clearly states that your app should be primarily designed to provide health or fitness service. If your app is not a health or fitness focused app, you might not able to submit your universal app .
In addition, your app must not access the HealthKit APIs unless the
app is primarily designed to provide health or fitness services. Your
app's role as a health and fitness service must be clear in both your
marketing text and your user interface. Specifically, the following
guidelines apply to all HealthKit apps.
https://developer.apple.com/library/prerelease/iOS/documentation/HealthKit/Reference/HealthKit_Framework/index.html
Removing healthkit from Required device capabilities in my Info.plist solve this issue for me.

Resources