I have added performance monitoring to iOS project.
The automatic traces as well as custom traces appear in the dashboard. Also the aggregated network calls are visible in network tab.
But I am not able to see details of trace samples. If I click 'see sessions' a message saying to update the Firebase Sdk is displayed.
I am using Firebase SDK 5.13.0, which is the latest stable SDK.
Note that Performance Monitoring data usually displays within 12 hours of testing your app.
Unfortunately, based on their getting started docs, they mentioned that the data takes up to 12 hours to be displayed. So, we will just have to wait for it to appear.
Related
(This is now confirmed as a regression in iOS16. A TSI has been opened.)
In the summer, Apple published an informative sample app on sharing objects between iCloud users using Core Data, CloudKit and UICloudSharingController in SwiftUI.
However, adding more participants using UICloudSharingController does not appear to work when used for Core Data with CloudKit.
MRE:
See the Apple sample app linked above.
The same problem also appears when using other sample apps, like the one from RayW.
The problem does not appear in samples that use pure CloudKit, such as this one by Apple.
Reproduction:
Create new share,
Manage share with UICloudSharingController,
Share With More People,
Share using Messages or other service. Succeeds on first attempt, fails on subsequent attempts.
Expectation:
We can use UICloudSharingController to add new participants, using Messages, Mail or other platforms. The link will display correctly on all devices.
Reality:
On iOS16+, attempting to share via Messages engages the "Collaboration" framework and leads to an alert: "An Error Occurred. Unable to start collaboration" (see Image 1). A console warning appears (see below). Triggering this error breaks ANY further shares - the link now cannot be created for Mail and other platforms either (see Image 2). Furthermore, if the first attempt succeeds, the link does not appear correctly on the receiving device (see Image 3).
After further testing, UICloudSharingController also fails in iOS15 - it just dismisses the sheet rather than throw an alert on a compact device. UICloudSharingController is definitely bugged when showing an existing share.
Console logs:
The following console message appears when this issue happens for the first time:
CoreDataCloudKitShare[3672:1242159] systemSharingUIDidSaveShareBlock received error: <CKError 0x28314d8c0: "Server Record Changed"
(14/2004); server message = "client oplock error updating record"; op
= 134D57570A63DF3A; uuid = 8F070F8B-0AC0-4FFE-A52D-154BCBF3196C; container ID = “containerID>
Where "containerID" is the CKContainer ID, like “iCloud.com.company.samples.CoreDataCloudKitShare”. The message does not appear on subsequent attempts to add more people.
Question:
How can this be resolved, so that we can share Core Data records between users using CloudKit and UICloudSharingController?
Images
EDITs:
Other samples of sharing using Core Data and CloudKit exhibit the same problem. Also, console shows a warning when the issue first happens. Post was edited to reflect this.
Question was also posed in Apple Dev Forums
Feedback submitted at FB11623246.
Added conclusions after further testing
24 October 2022: I thought the issue was resolved in iOS16.0.3, but it continues to manifest. It does not matter whether UICloudSharingController is invoked using UIViewController or UIViewControllerRepresentable.
10 November 2022: The issue appears in both Development and Production environments (tested via TestFlight)
15 November 2022: In Ask Apple office hours, this was brought up to the attention of an Apple engineer, who confirmed this as a regression.
25 November 2022: A DTS has been opened. This is now confirmed as a known bug with high priority.
26 December 2022: The bug remains in iOS16.2. An attempt was made to use SWCollaborationView as an alternative to managing collaboration in iOS16. The sharing workflow indeed goes through even on subsequent shares. However, SWCollaborationView does not appear to be compatible with SwiftUI (ugh). See associated SO question
17 January 2023: SWCollaborationView is confirmed as NOT compatible with SwiftUI. FB submitted at FB11941664, please submit FB as well.
25 January 2023: Unfortunately, the issue persists in iOS 16.3.
15 February 2023: Unfortunately, the issue persists in iOS 16.3.1.
Being dealing with both UISharingController and SWCollaborationView for a few month now, I came across this bug (and many others) multiple times wether on my own code or from the Apple samples available.
Calling persistUpdatedShare(_:in:completion:) seems to both save an updated version to the Cloud AND update the locally cached metadata of the share, which is why, after performing persistUpdatedShare, If you keep acting on the initially fetched share, you will get this oplock error, you need to update your code to refetch the lastest CKShare in the persistUpdatedShare completion block.
I couldn't find any easy and clean solution with the current APIs, on top of it SWCollaborationView isn't calling properly its delegates, when it does call them (delegate, cloudSharingDelegate, cloudSharingControllerDelegate) which make it even more difficult.
I am now using SWColaborationView but with major bugs in Catalyst.
I ended up persisting the share using CKSystemSharingUIObserver blocks.
https://developer.apple.com/documentation/cloudkit/cksystemsharinguiobserver
In the systemSharingUIDidSaveShareBlock I persist my share using persistUpdatedShare(_:in:completion:), and, in its completion block I dismiss the presented collaborationView, refetch the share and rebuild the SWCollaborationView and its itemProvider.
Hope this helps
I filed a radar today. You can reference to it as well. The more radars we file, the higher the probability this will get fixed.
FB11990920
But realtime traffic users are still appearing and latest release shows that users are adopting the new version, so clearly it's still reporting correctly? But all of the data dropped to 0 overnight. Any ideas?
I'm running Facebook Ads campaigns for my iOS app and quite naturally I have Facebook Analytics SDK integrated inside my app to track App Installs and Start Trial events to measure the "quality" of the traffic my campaigns bring.
At the Analytics settings page inside Facebook developer dashboard.
https://developers.facebook.com/apps/XXX_APP_ID_XXX/analytics/settings/?business_id=XXX_BUSINESS_ID_XXX
I have the option Log In-App Events Automatically (Recommended) set to "Yes", which I presume enables the tracking of App Install and Start Trial events. There's also a Shared App Secret field filled in with the value from iTunesConnect.
Indeed, the App Install and Start Trial events have started to appear inside Analytics dashboard
https://www.facebook.com/analytics/XXX_APP_ID_XXX/AppEvents?__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX
However I noticed when viewing the stats for just App Installs there's a quite considerable value in USD attributed to these events. I decided to take a closer look into these events using Event Debugging
https://www.facebook.com/analytics/XXX_APP_ID_XXX/most_recent?since=1577923200000&until=1580256000000&__aref_src=landing_page&__aref_id=entity_name&force_desktop=1&user_id=XXX_USER_ID_XXX
and selecting "App Install" in the events filter.
There I saw that some (only some and as if randomly) App Installs have a value associated with them. To me this is an unexpected behavior since I can't imagine revenue being made by just receiving an install.
Same goes for Start Trial event, which always has the value associated to it (equal to the sale price of a subscription period) and once again this makes no sense to me because started trials themselves bring no value to me. They may be canceled or may end up in Billing Retry when the user has no money on the bank card attached to their iTunes account, etc. I track the conversions from Start Trial to Purchase on my backend separately with great precision and only these conversions as well as subsequent renewals would bring real value to my business.
I can and will track these Purchases manually and post them to Facebook (server-to-server style) and I will supply the corresponding value to these events myself, which will help to understand the overall performance and ROI but I need to clean my stats from these "false" automatically and erroneously attributed values to App Install and Start Trial events first.
I've already reported this issue to Facebook few days ago, however they seem to be slow in handling such requests so I've decided to ask here if anybody ran into similar issue.
Add this to your plist file to disable Auto Event Logging
<key>FacebookAutoLogAppEventsEnabled</key>
<false/>
Thanks to Lena Bru for giving enough food to find a solution.
The Facebook documentation is scarce on the raised questions and the support answer literally headed me towards the documentation. To recap things, there were 2 main issues (the second one I've mentioned in the comments to Lena's reply):
Facebook was tracking value for the events, which brought no value to my business
Some of the events I've sent from backend didn't appear in the campaign reports
To solve both of these problems, I:
Turned off the value tracking option in the Facebook app settings
On the client side I've started setting up User ID (which the client receives from backend) according to Facebook documentation
I've started to send all of the events, which I wanted to view inside Facebook business cabinet, under custom names from backend. I've supplemented them with app_user_id parameter (see Advanced Matching for App Events in Facebook documentation) so that they could match the App Installs reported from client.
There's still a smaller issue left (it feels like Facebook reports include 20% less installs than actually happening) but the current setup is already something to begin with.
I am using Zapier to send a pin to my Pinterest account from Google Sheets
but it is showing me an error:
We had trouble sending your test through. The app returned "Sorry! We
blocked this link because it may lead to spam.". It looks like the
server for your connected app is down or currently experiencing
problems. Please check the app's status page or contact support if
there are no reported issues.
My Sample Record
My sample Excel File
My Board Link where I want to pin
If you have not already reached out to them, I would suggest that this is the perfect question for Zapier's support team. They are quite punctual and have access to information regarding specific app integration status' that we, the general public, will not. That said this looks like it may be a symptom of an error with Zapier's Google Sheet integration. At the time of this writing Zapier is reporting 429 errors concerning Google Sheets. If I am ever facing unexplained errors with one of my zaps the first place I check is https://status.zapier.com/ which has live updates and reports on any integrations that may be facing issues.
I recently published my first iOS app and felt really dissatisfied with apple's iTunesConnect portal for tracking app sales. Specifically, I can't tell what time of day the app was downloaded, and I have to wait for the results until the next morning.
Does anyone know a piece of code that can be unobstrusively inserted in my app that will somehow report to me after if has been installed for the first time? I don't want any privacy/rules violations, I just want the app to report that it has been downloaded, and maybe a few metrics regarding country/time/etc.
Thanks for the help!
EDIT:
Regarding a first run 'phone home,' is it possible to execute some HTML without having the user knowing (I don't want to interrupt their experience by opening a webbrowser). For example, some javascript from a statcounter? If not, what can I do?
There are a lot of analytics tools that can help you get better metrics.
Flurry
Google Analytics
Mixpanel
Kissmetrics
Google analytics gives you usage information in real time, which is nice.
Also, if your users log in through Facebook, they provide some interesting analytics as well.