Number: 017, Date: 2024-05-02

2024.04.22 ~ 2024.05.01

πŸ€– AI


I came across an AI tool that allows you to draw like in a drawing program, generating HTML, CSS, and JS code, which motivated me to explore more AI tools.

🚨 ATT (AppTrackingTransparency) - App Tracking Permission


The reason for rejection was β€œThe AppTrackingTransparency framework is not displaying the app tracking permission request popup.”

ATT was introduced in iOS 14.5 and helps access the user’s IDFA (Identifier for Advertisers) and track users/devices, but it requires user consent for app tracking permissions.

I speculated on why the permission request popup did not appear:

  1. Check if the option to allow app tracking requests is enabled in iPhone settings β†’ Privacy & Security β†’ Tracking. If this option is disabled, the popup will not appear.
  2. An issue in iOS 17 related to the method for requesting tracking permissions: the method ATTrackingManager.requestTrackingAuthorization(completionHandler:) should be replaced with ATTrackingManager.requestTrackingAuthorization() async -> ATTrackingManager.AuthorizationStatus.
  3. If permission request popups appear consecutively, they might be ignored: The permission request should be triggered in applicationDidBecomeActive before the app is fully loaded (as recommended by Apple) or introduce a delay for handling popups.

By addressing these issues, I successfully passed the app review.

πŸ“† DateFormatter


I stumbled upon an article discussing the high cost of initializing DateFormatter instances.

It mentioned that while the creation time of the DateFormatter instance itself is short, the computation that occurs during creation can exponentially increase the time required.

Therefore, I changed the code handling Dates to create a global DateFormatter instance, reducing the costs associated with its creation.

Refer to the article for analysis: DateFormatter Analysis.

🌈 Carousel Page Scale Banner


I decided to create a carousel-style banner for a side project, highlighting the center item with a scale effect as items move.

I referred to the AdvancedCompositionalLayout repository, which is a good resource for future reference, and adapted it to my coding style.

I switched from Combine to RxSwift and used SnapKit and Then for UI composition.

πŸ™‹πŸ»β€β™‚οΈ Other Notes


  1. UISheetPresentationController, available from iOS 15, allows for easy implementation of Bottom Sheets.
  2. App Groups enable data sharing between different apps.
  3. There was a GPG key error; from the new version, you now need to enter a password separately for the GPG key.
  4. rbenv is a package that allows you to select and use multiple Ruby versions.