Bird
Raised Fist0
iOS Swiftmobile~10 mins

Analytics and Crashlytics in iOS Swift - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import Firebase Analytics in your Swift file.

iOS Swift
import [1]
Drag options to blanks, or click blank then click option'
ASwiftUI
BFirebaseAnalytics
CFoundation
DUIKit
Attempts:
3 left
💡 Hint
Common Mistakes
Importing UIKit or Foundation instead of FirebaseAnalytics.
Forgetting to import any Firebase module.
2fill in blank
medium

Complete the code to log a custom event named "purchase" with Firebase Analytics.

iOS Swift
Analytics.[1]("purchase", parameters: ["item": "book", "price": 9.99])
Drag options to blanks, or click blank then click option'
AsendEvent
BrecordEvent
CtrackEvent
DlogEvent
Attempts:
3 left
💡 Hint
Common Mistakes
Using non-existent methods like sendEvent or trackEvent.
Misspelling the method name.
3fill in blank
hard

Fix the error in the code to record a non-fatal error with Crashlytics.

iOS Swift
Crashlytics.crashlytics().[1](NSError(domain: "example", code: 123, userInfo: nil))
Drag options to blanks, or click blank then click option'
ArecordError
BreportError
ClogError
DsendError
Attempts:
3 left
💡 Hint
Common Mistakes
Using methods that do not exist in Crashlytics API.
Confusing fatal crash reporting with non-fatal error recording.
4fill in blank
hard

Fill both blanks to set a user ID and a user property in Firebase Analytics.

iOS Swift
Analytics.[1]("user_123")
Analytics.[2]("favorite_color", value: "blue")
Drag options to blanks, or click blank then click option'
AsetUserID
BsetUserProperty
ClogEvent
DrecordError
Attempts:
3 left
💡 Hint
Common Mistakes
Using logEvent instead of setUserProperty.
Confusing user ID setting with event logging.
5fill in blank
hard

Fill all three blanks to initialize Firebase, enable Crashlytics collection, and log a test event.

iOS Swift
FirebaseApp.[1]()
Crashlytics.crashlytics().[2] = true
Analytics.[3]("test_event")
Drag options to blanks, or click blank then click option'
Aconfigure
BisCrashlyticsCollectionEnabled
ClogEvent
Dstart
Attempts:
3 left
💡 Hint
Common Mistakes
Using start() instead of configure().
Trying to call a method instead of setting the boolean property for Crashlytics.
Using wrong method names for logging events.

Practice

(1/5)
1. What is the main purpose of using Analytics in an iOS app?
easy
A. To track user actions and app usage patterns
B. To report app crashes and errors
C. To improve app performance by optimizing code
D. To manage app permissions and privacy settings

Solution

  1. Step 1: Understand Analytics role

    Analytics collects data about how users interact with the app, like button taps or screen views.
  2. Step 2: Differentiate from Crashlytics

    Crashlytics focuses on crash reports, not user behavior tracking.
  3. Final Answer:

    To track user actions and app usage patterns -> Option A
  4. Quick Check:

    Analytics = user action tracking [OK]
Hint: Analytics tracks usage; Crashlytics tracks crashes [OK]
Common Mistakes:
  • Confusing Analytics with Crashlytics
  • Thinking Analytics fixes crashes
  • Assuming Analytics manages permissions
2. Which Swift code snippet correctly logs a custom event named "purchase_complete" using Firebase Analytics?
easy
A. Analytics.logEvent("purchase_complete", parameters: [:])
B. Analytics.logEvent(purchase_complete, parameters: [:])
C. Analytics.logEvent("purchase_complete", parameters: "nil")
D. Analytics.logEvent('purchase_complete')

Solution

  1. Step 1: Check method signature

    The correct method requires event name as a string and parameters as a dictionary (can be empty).
  2. Step 2: Validate syntax correctness

    Analytics.logEvent("purchase_complete", parameters: [:]) uses a string event name and an empty dictionary, matching the required syntax.
  3. Final Answer:

    Analytics.logEvent("purchase_complete", parameters: [:]) -> Option A
  4. Quick Check:

    Correct syntax = Analytics.logEvent("purchase_complete", parameters: [:]) [OK]
Hint: Event name as string, parameters as dictionary [OK]
Common Mistakes:
  • Missing quotes around event name
  • Passing nil instead of dictionary
  • Omitting parameters argument
3. Given the following Swift code snippet using Crashlytics, what will happen when a crash occurs?
Crashlytics.crashlytics().log("User tapped buy button")
fatalError("Simulated crash")
medium
A. The app crashes but the log message is lost
B. The log message causes a runtime error
C. The app does not crash because log prevents it
D. The log message is sent to Crashlytics before the app crashes

Solution

  1. Step 1: Understand Crashlytics log behavior

    Calling log records a message that is sent to Crashlytics on next app launch after a crash.
  2. Step 2: Analyze crash trigger

    fatalError causes an immediate crash, but the log message is preserved for reporting.
  3. Final Answer:

    The log message is sent to Crashlytics before the app crashes -> Option D
  4. Quick Check:

    Crashlytics logs persist through crash [OK]
Hint: Crashlytics logs survive crashes for later reporting [OK]
Common Mistakes:
  • Assuming logs are lost on crash
  • Thinking log prevents crash
  • Confusing log with error throwing
4. You added Crashlytics to your app but crash reports are not showing up in the Firebase console. Which of these is the most likely cause?
medium
A. You used fatalError instead of assert
B. You forgot to call Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)
C. You did not import UIKit in your Swift file
D. You called Analytics.logEvent instead of Crashlytics methods

Solution

  1. Step 1: Check Crashlytics setup requirements

    Crashlytics requires enabling data collection explicitly or via Info.plist to send crash reports.
  2. Step 2: Identify missing configuration

    Not calling setCrashlyticsCollectionEnabled(true) disables crash report sending.
  3. Final Answer:

    You forgot to call Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true) -> Option B
  4. Quick Check:

    Enable collection to send crash reports [OK]
Hint: Enable Crashlytics collection to receive reports [OK]
Common Mistakes:
  • Confusing Analytics logging with Crashlytics setup
  • Missing import statements
  • Thinking crash method choice affects reporting
5. You want to log a user property "user_level" with value "gold" in Firebase Analytics and also log a non-fatal error in Crashlytics when a payment fails. Which Swift code snippet correctly does both?
hard
A. Analytics.setUserProperty("user_level", forName: "gold") Crashlytics.crashlytics().record(error: Error("Payment failed"))
B. Analytics.logEvent("user_level", parameters: ["gold"]) Crashlytics.crashlytics().log("Payment failed")
C. Analytics.setUserProperty("gold", forName: "user_level") Crashlytics.crashlytics().record(error: NSError(domain: "Payment", code: 1, userInfo: nil))
D. Analytics.setUserProperty("gold", forName: "user_level") Crashlytics.crashlytics().log("Payment failed")

Solution

  1. Step 1: Set user property correctly

    Use setUserProperty(_:forName:) with value first, then property name.
  2. Step 2: Log non-fatal error properly

    Use record(error:) with an NSError instance to report non-fatal errors.
  3. Final Answer:

    Analytics.setUserProperty("gold", forName: "user_level") Crashlytics.crashlytics().record(error: NSError(domain: "Payment", code: 1, userInfo: nil)) -> Option C
  4. Quick Check:

    User property + non-fatal error = Analytics.setUserProperty("gold", forName: "user_level") Crashlytics.crashlytics().record(error: NSError(domain: "Payment", code: 1, userInfo: nil)) [OK]
Hint: User property value first, use record(error:) for non-fatal errors [OK]
Common Mistakes:
  • Swapping user property name and value
  • Using log() instead of record(error:) for errors
  • Passing wrong types to methods
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard