Push vs Pull

Gandalf uses the Push approach where users actively send their data upon request, in contrast with the Pull method where developers might automatically retrieve data without ongoing user interaction.

  • End-users directly control when & what data they share. This aligns with data protection laws by requiring user consent + promotes transparency & trust.
  • Passwords & other credentials can’t be compromised, as they’re not stored/accessed by Gandalf and developers. Authentication happens client side & on-device.
  • By avoiding less secure techniques like automated credential reuse, password sharing and unattended bot navigation, Gandalf respects the policies of third-party services like Netflix, Amazon, etc.

One-Tap Updates

Just as end-users remain logged into their favorite websites, Connect keeps their sessions active. They simply need to tap ‘Share’ to update their data, eliminating the need for repeated logins. Furthermore, subsequent data updates are significantly quicker since they involve much less data transfer.

Push Notifications

Send push notifications to quickly initiate the Connect One-Tap Update flow, which prompts end-users to push recent data before redirecting them to your application.


To trigger Connect immediately a user taps a notification from your app, redirect to the Connect URL as soon as possible in your app’s notification response handler.

In the examples below, the Connect URL is generated server-side and sent within the push notification payload; however, this is not mandatory as the URL can also be constructed client-side.

import UIKit
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Set the delegate for the notification center
        UNUserNotificationCenter.current().delegate = self
        return true

    // Handle notification response
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        let userInfo = response.notification.request.content.userInfo

        // Handle the notification response by opening a URL if specified
        if let urlString = userInfo["gandalfConnectURL"] as? String, let url = URL(string: urlString) {
            // Ensure the application is open and ready to handle the URL appropriately
            DispatchQueue.main.async {
                UIApplication.shared.open(url, options: [:], completionHandler: nil)


In this scenario, the effectiveness of the push notification heavily depends on the content and clarity of its text.

  • The text should clearly convey what notification is about without ambiguity. Users should understand at a glance what action is expected of them.
  • Tailor the notification content to the user’s interests or previous behaviors. For example, mentioning specific details like Daniel & 8 more have shared new favorites! makes the notification feel more personal and relevant.
  • Include a straightforward call to action. Notifications should not only inform but also encourage users to take a specific action, such as Update now, Refresh your data, or See what’s new.
  • If the data is time-sensitive, convey urgency in the notification. For instance, It’s time for your spending report! suggests immediacy and prompts quicker user engagement.


In cases where triggering the Connect flow immediately isn’t extremely important, consider guiding users to a screen within your app that offers the option to start the Connect flow at their convenience.

This flow allows you to design your app’s interface to actively encourage users to update their data.

  • Nudge users to update their data by showing teasers. For example, in a social app, display updates from a few friends and prompt users to update their data to see more. Similarly, in a competitive app, show part of the leaderboard and encourage users to update for full rankings
  • When there’s no new data to use as a teaser, especially if it’s the user’s first data update, consider showing a preview of what the data-filled UI will look like.