Pendo captures product usage data, gathers user feedback, and lets you communicate in-app to onboard, educate, and guide users to value

Overview

Pendo SDK for IOS

Cocoapods platforms Cocoapods Cocoapods Cocoapods Cocoapods Cocoapods

The Pendo Mobile SDK is a code-less, retro-active analytics collector across all of your app's versions. The SDK also allows presentation of in-app messages, tooltips and multi-step walkthrough guides built using Pendo's Visual Design Studio online tool.

  • The integration requires just three lines of code.

  • The SDK will begin collecting all analytics the moment the SDK is integrated, without any additional steps.

  • Tracking the analytics and guides will work across all your app versions.

Installation Instruction

Benchmarks

The SDK will increase your production app (on App Store) by roughly 2.3MB
A session including the init process (usage of setup, startSession methods) and downloading 3 guides (~80KB overall) will elapse approximately 3sec.
Network load is executed in parallel, prioritizing guides with higher priority to be downloaded first and becoming available earlier during the initialization process of the session.

Comments
  • React native sdk upgrade to 2.19

    React native sdk upgrade to 2.19

    Whenever I upgrade (to 2.19.0 from 2.180.0) I go through all the steps and I keep getting this error.

    I go through all the steps and still run into it, I even got another coworker to try it on his end and he is still getting the same error. (this error is after a pod install)

    error: Error: Unable to resolve module react/jsx-runtime from /Users/kdarroch/frontend/VisionNxMobile/node_modules/rn-pendo-sdk/lib/pendoRN.js: react/jsx-runtime could not be found within the project or in these directories:

    node_modules/rn-pendo-sdk/node_modules

    node_modules

    ../node_modules

    If you are sure the module exists, try these steps:

    1. Clear watchman watches: watchman watch-del-all

    2. Delete node_modules and run yarn install

    3. Reset Metro's cache: yarn start --reset-cache

    4. Remove the cache: rm -rf /tmp/metro-*

    opened by kristinadarroch 18
  • React Native App with React Navigation in TypeScript - Building in Microsoft AppCenter is failing for iOS

    React Native App with React Navigation in TypeScript - Building in Microsoft AppCenter is failing for iOS

    We use Visual Studio AppCenter to build code from our repo and in the cloud. It automatically run unit tests and releases the app to testers and stores (Android, iOS).

    When building the React Native app in AppCenter, it failed for iOS with many errors for Pendo.arm64.xar. I opened the issue initially at pendo-io/RN-demo-app-React-Navigation repo, but was advised to open it here.

    Most of the errors are similar to the below about the address of an intrinsic:

    Clang: cd /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/temptc3472sy ['/Applications/Xcode_13.2.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang', '-cc1', '-cc1', '-triple', 'arm64-apple-ios9.0.0', '-emit-obj', '--mrelax-relocations', '-disable-llvm-passes', '-faligned-alloc-unavailable', '-target-sdk-version=15.4', '-fvisibility-inlines-hidden-static-local-var', '-target-abi', 'darwinpcs', '-Os', '-x', 'ir', '002', '-o', '002.o'] -= Output =- Cannot take the address of an intrinsic! %18 = tail call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*))(i8 %16, i8* %17) #12 [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.retainAutoreleasedReturnValue) ], !dbg !53, !clang.arc.no_objc_arc_exceptions !41 Cannot take the address of an intrinsic! ... ... ... ... ... ... ...

    %37 = call %7* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to %7* (i8*, i8*))(i8 %35, i8* %36) #7 [ "clang.arc.attachedcall"(i8* (i8*)* @llvm.objc.retainAutoreleasedReturnValue) ], !dbg !603 fatal error: error in backend: Broken module found, compilation aborted! Exited with 70

    Failed to compile bundle: /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/Pendonzdrrlvp/Pendo.arm64.xar Stderr:

    /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:372:in run' /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:2886:inblock in CompileOrStripBitcodeInBundle' /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:2825:in each' /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:2825:inCompileOrStripBitcodeInBundle' /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:3112:in block in ProcessIPA' /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:3073:ineach' /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:3073:in ProcessIPA' /Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/ipatool:4035:in

    '} ** EXPORT FAILED **

    ##[error]Error: /usr/bin/xcodebuild failed with return code: 70

    opened by shariq-muhammad 14
  • Unable to install React Native Pendo in Apple silicon for IOS

    Unable to install React Native Pendo in Apple silicon for IOS

    after pod install, When I run react-native run-ios, I get following error

    Create build description
    Build description signature: <signature>
    Build description path: /Users/<username>/Library/Developer/Xcode/DerivedData/<Project>/Build/Intermediates.noindex/XCBuildData/07aa4a489793fd54166-desc.xcbuild
    
    note: Build preparation complete
    note: Building targets in dependency order
    /Users/<user>/Documents/Developement/mobile/ios/<Project>.xcodeproj: error: The linked library 'libPods-<Project>.a' is missing one or more architectures required by this target: x86_64. (in target '<Project>' from project '<Project>')
    

    it is Apple Silicon Mac M1,

    opened by vikas-0 10
  • Error on app init -

    Error on app init - "State must not be null"

    Overview

    • We followed these instructions to integrate the newest Pendo version (2.18.2) to our React Native app.
    • Unfortunately, we receive an error "State must not be null" when initializing the app.
    • The app still works fine and Pendo seems to track user visits on pages/screens setup on Pendo web app.

    Environment info:

    • React Native version: tried with 0.66.5 and also 0.68.5
    • Using React Native CLI (no Expo).
    • Using codeless Pendo tracking (no track events solution!)
    • "@react-navigation/bottom-tabs": "5.11.15"
    • "@react-navigation/core": "5.16.1"
    • "@react-navigation/drawer": "5.12.9"
    • "@react-navigation/material-top-tabs": "5.3.19"
    • "@react-navigation/native": "5.9.8"
    • "@react-navigation/stack": "5.14.9"
    • Android integration shows a similar error (see below).

    Reproduction:

    1. First, we setup Pendo in our “index.js” via the “headlessCheck()” method:
    InitPendo
    1. Then, we wrap our NavigationContainer with “withPendoRN”:
    withPendoRN
    1. And finally, we start a new Pendo session when the main navigation gets loaded (after user login):
    PendoStartSession
    1. Unfortunately, when we run the app on iOS or Android, we get the following error:
    PendoStateError PendoAndroidError
    1. Still, the codeless event tracking seems to be working as we get some statistics on Pendo web app. Nevertheless, something seems to be going wrong there with the state.

    Any help would be very much appreciated, thanks in advance!

    opened by SplinterStan 9
  • Unable to run iOS App test targets when pendo installed via pod

    Unable to run iOS App test targets when pendo installed via pod

    We are having issues when trying to run our tests with pendo (v2.18.0) installed via cocoa pods. This manifests as the app/simulator failing to launch when running tests, both locally and over CI (Xcode Cloud in our case). When Pendo is installed via SPM the issue does not seem to arise.

    The issue seems somewhat similar to this https://developer.apple.com/forums/thread/704899

    Let me know if I can provide more information.

    opened by benjamin-es-hall 8
  • Guide on App Launch won't trigger if user grants notifications

    Guide on App Launch won't trigger if user grants notifications

    We have an app were we are using Pendo to display a Guide to new users upon App Launch.

    The guide doesn't show up properly on App Launch if the request for notifications from the user is granted, but it does if the request is denied. If the request is approved, the guide will show up at a random time through the app's use.

    Tested on iOS 15+, iPhone XR and higher

    opened by yago1994 7
  • SDK 2.20.0-swiftui crashes right after the app start

    SDK 2.20.0-swiftui crashes right after the app start

    Found unexpected null pointer value while trying to cast value of type 'UIViewController' (0x7fbb8301afe0) to 'PendoSDK.PNDHostingControllerProtocol' (0x7fbb8301aff8) CoreSimulator 857.13 - Device: iPhone 14 (D753AE2B-9ADC-407A-807A-554113E8F77C) - Runtime: iOS 16.1 (20B72) - DeviceType: iPhone 14

    -------------------------------------
    Translated Report (Full Report Below)
    -------------------------------------
    
    Incident Identifier: 5CFDA17B-1C22-4F88-A105-60B8178D26BE
    CrashReporter Key:   13ED150A-B741-FEE2-EB62-6F6BE20E69C6
    Hardware Model:      MacBookPro16,1
    Code Type:           X86-64 (Native)
    Role:                Foreground
    Parent Process:      launchd_sim [83923]
    Coalition:           com.apple.CoreSimulator.SimDevice.D753AE2B-9ADC-407A-807A-554113E8F77C [191596]
    Responsible Process: SimulatorTrampoline [12696]
    
    Date/Time:           2022-12-08 10:02:05.9965 +0100
    Launch Time:         2022-12-08 10:02:03.8065 +0100
    OS Version:          macOS 13.0 (22A380)
    Release Type:        User
    Report Version:      104
    
    Exception Type:  EXC_CRASH (SIGABRT)
    Exception Codes: 0x0000000000000000, 0x0000000000000000
    Triggered by Thread:  0
    
    Thread 0 Crashed:: UI Dispatch queue: com.apple.main-thread
    0   libsystem_kernel.dylib        	       0x10dc3d30e __pthread_kill + 10
    1   libsystem_pthread.dylib       	       0x10db86f7b pthread_kill + 263
    2   libsystem_c.dylib             	       0x10db2107a __abort + 139
    3   libsystem_c.dylib             	       0x10db20fef abort + 145
    4   libswiftCore.dylib            	       0x10ec38025 swift::fatalErrorv(unsigned int, char const*, __va_list_tag*) + 133
    5   libswiftCore.dylib            	       0x10ec380ab swift::fatalError(unsigned int, char const*, ...) + 123
    6   libswiftCore.dylib            	       0x10ec3478a getNonNullSrcObject(swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::TargetMetadata<swift::InProcess> const*) + 218
    7   libswiftCore.dylib            	       0x10ec33d26 tryCast(swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::OpaqueValue*, swift::TargetMetadata<swift::InProcess> const*, swift::TargetMetadata<swift::InProcess> const*&, swift::TargetMetadata<swift::InProcess> const*&, bool, bool) + 774
    8   libswiftCore.dylib            	       0x10ec338ec swift_dynamicCast + 156
    9   Pendo                         	       0x109bd7fbf specialized static DumpTree.pnd_dump(controller:name:indent:maxDepth:printingOption:descriptionLength:pruneEnabled:) + 111
    10  Pendo                         	       0x109bd75ed @objc static DumpTree.pnd_dump(controller:name:indent:maxDepth:printingOption:descriptionLength:pruneEnabled:) + 125
    11  Pendo                         	       0x109bc3d1b -[PNDScreenManager swiftUIDataAppend:fromWindow:] + 204
    12  Pendo                         	       0x109bc37c2 -[PNDScreenManager screenDataFor:] + 284
    13  Pendo                         	       0x109bc3418 -[PNDScreenManager screenChanged] + 68
    14  Pendo                         	       0x109bc2d18 __44-[PNDScreenManager triggerScreenScanOfType:]_block_invoke.118 + 622
    15  Pendo                         	       0x109bb18a2 -[PNDDebouncer fireNow] + 36
    16  Foundation                    	       0x10b441266 __NSFireTimer + 67
    17  CoreFoundation                	       0x10a019819 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    18  CoreFoundation                	       0x10a019363 __CFRunLoopDoTimer + 812
    19  CoreFoundation                	       0x10a018ada __CFRunLoopDoTimers + 243
    20  CoreFoundation                	       0x10a013322 __CFRunLoopRun + 2126
    21  CoreFoundation                	       0x10a0126f7 CFRunLoopRunSpecific + 560
    22  GraphicsServices              	       0x10fc9228a GSEventRunModal + 139
    23  UIKitCore                     	       0x11cdb262b -[UIApplication _run] + 994
    24  UIKitCore                     	       0x11cdb7547 UIApplicationMain + 123
    25  App            	                       0x102c4188d main + 285 (main.m:22)
    26  dyld_sim                      	       0x1065fc2bf start_sim + 10
    27  dyld                          	       0x10699e310 start + 2432
    
    opened by ondrejstasek 5
  • Can't install Pendo SwiftUI beta

    Can't install Pendo SwiftUI beta

    I'm getting a consistent crash with the following when trying to run the beta with the branch set to swiftui:

      Referenced from: '/private/var/containers/Bundle/Application/1C03E581-27EE-4273-A06F-D68519681216/Workspaces.app/Frameworks/Pendo.framework/Pendo'
      Reason: tried: '/usr/lib/system/introspection/libswiftCore.dylib' (no such file), '/private/var/containers/Bundle/Application/1C03E581-27EE-4273-A06F-D68519681216/Workspaces.app/Frameworks/libswiftCore.dylib' (no such file), '/private/var/containers/Bundle/Application/1C03E581-27EE-4273-A06F-D68519681216/Workspaces.app/Frameworks/libswiftCore.dylib' (no such file), '/usr/local/lib/libswiftCore.dylib' (no such file), '/usr/lib/libswiftCore.dylib' (no such file)
    Library not loaded: '@rpath/libswiftCore.dylib'
      Referenced from: '/private/var/containers/Bundle/Application/1C03E581-27EE-4273-A06F-D68519681216/Workspaces.app/Frameworks/Pendo.framework/Pendo'
      Reason: tried: '/usr/lib/system/introspection/libswiftCore.dylib' (no such file), '/private/var/containers/Bundle/Application/1C03E581-27EE-4273-A06F-D68519681216/Workspaces.app/Frameworks/libswiftCore.dylib' (no such file), '/private/var/containers/Bundle/Application/1C03E581-27EE-4273-A06F-D68519681216/Workspaces.app/Frameworks/libswiftCore.dylib' (no such file), '/usr/local/lib/libswiftCore.dylib' (no such file), '/usr/lib/libswiftCore.dylib' (no such file)
    

    Also, in our non-beta implementation, we are calling this init method in the .onOpenUrl method:

    PendoManager.shared().initWith(url)

    According to the docs for SwiftUI in your package, it should be replaced with the below? Xcode autocompletes the optional version of application, but if I remove the question mark, it views the open parameter as an extra argument, so we wouldn’t be able to pass in the url. The below throws an error:

    .onOpenURL { url in
        if url.absoluteString.contains(Constants.pendo) {
            appDelegate.application?(UIApplication.shared, open: url)
        } else {
            viewStore.send(.didOpenURL(url))
        }
    }
    

    To sort that out, I tried calling that function in my AppDelegate, so now my AppDelegate looks like this:

    class AppDelegate: NSObject, UIApplicationDelegate {
    
        enum Constants {
            static let pendoAppKey = "PENDO_APP_KEY"
        }
    
        func application(
            _ application: UIApplication,
            didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
    
                if !UITestsSupport.isRunningUITests,
                   let pendoAppKey = ProcessInfo.processInfo.environment[Constants.pendoAppKey] {
                    PendoManager.shared().setup(pendoAppKey)
                }
                return true
        }
    
        func application(_ app: UIApplication,
                         open url: URL,
                         options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
            return true
        }
    }
    
    This is how the SPM is set up in our `Package Dependencies`:
    ![image](https://user-images.githubusercontent.com/23366254/199858459-8877e062-32ee-431c-8b6a-fa1feb0f4756.png)
    
    I'm running Xcode 14.0, with a minimum target of iOS 15.0, deploying to an iPad Pro (12.9-inch) (3rd generation) running 15.6.1. 
    opened by Pigpocket 4
  • How to install the latest version?

    How to install the latest version?

    I tried to install Pendo:

    platform :ios, '10.0'
    pod 'Pendo'
    

    As a result, was installed it:

    Installing Pendo (2.15.0.5328)

    However, the latest version is 2.15.2.5470. How to install it?

    Thank you

    opened by Max-Job 4
  • Add readable isDebugEnabled property to PendoManager

    Add readable isDebugEnabled property to PendoManager

    Right now there is only the method - (void)setDebugMode:(BOOL)isDebugEnabled available on PendoManager to toggle logging on or off. But I am missing a property to read the current status of Debug Mode being enabled or disabled, so that I verify the current status of that setting at runtime. Would be nice if you could add that property in one of the next versions.

    opened by kmaschke85 2
  • Add support for arm64 simulators

    Add support for arm64 simulators

    At the moment there is no binary for arm64 simulators included with the XCFramework. This means an app with Pendo as a dependency cannot be built on an Apple Silicon Mac without translation.

    opened by dtaylor1701 1
ExpoMod - a small application tool that lets you quickly setting up your computer for presentations / exhibitions

ExpoMod is a small application tool that lets you quickly setting up your computer for presentations / exhibitions. Or simply having useful shortcut to not being distract and keep awake your computer.

Niemes 10 Jun 29, 2022
UIEnvironment - A framework that mimics the SwiftUI view's environment to replicate the value distribution thought your UIKit app.

A framework that mimics the SwiftUI view's environment to replicate the value distribution thought your UIKit view hierarchy. Overview D

Łukasz Śliwiński 15 Dec 5, 2022
A usermanager written in swift 3.0 saves you from hassle of saving your active user session.

SwiftUserManager A usermanager written in swift 3.0 saves you from hassle of saving your active user session. Call api and give the json to MOProfile

Zeeshan Haider 22 Sep 30, 2022
Tutorials from sparrowcode.io website. You can add new, translate or fix typos. Also you can add your apps from App Store for free.

Tutorials from sparrowcode.io website. You can add new, translate or fix typos. Also you can add your apps from App Store for free.

Sparrow Code 31 Jan 3, 2023
Tutorials from sparrowcode.io website. You can add new, translate or fix typos. Also you can add your apps from App Store for free.

Страницы доступны на sparrowcode.io/en & sparrowcode.io/ru Как добавить свое приложение Добавьте элемент в json /ru/apps/apps.json. Если ваше приложен

Sparrow Code 30 Nov 25, 2022
KnockToReact is an iOS library written in Swift and Objective-C that brings an exclusive feature to interact with users just by receiving and recognizing "knocks" in the device.

KnockToReact is an iOS library written in Swift and Objective-C that brings an exclusive feature to interact with users just by receiving and recognizing "knocks" in the device.

Matheus Cavalca 25 Feb 10, 2022
SharedImages Screen grabs Main Features Private & self-owned social media Users store their images in their own cloud storage (Dropbox or Google Drive

SharedImages Screen grabs Main Features Private & self-owned social media Users store their images in their own cloud storage (Dropbox or Google Drive

Christopher Prince 12 Feb 10, 2022
Create an easy to peek SwiftUI View to showcase your own data, catalog, images, or anything you'd like.

Create an easy to peek SwiftUI View to showcase your own data, catalog, images, or anything you'd like.

Peter Larson 17 Jun 27, 2022
The app allows the user to change text color and text content when the displayed button is clicked

Hello World! App Description This application allows the user to change text color and text content when the displayed button is clicked. App Walk-tho

null 0 Mar 15, 2022
This is a basic mobile app that allows the user to tap a button to change the color of a label.

MYAPP App Description `This is a basic mobile app that allows the user to tap a button to change the color of a label. App Walk-though Required User S

null 0 Nov 27, 2021
You can monitor your APIs and websites on your menubar. Gives you status code 🎉 Cool & good

Hope not. Monitor your APIs and websites on your menubar. For macOS. Right now! YyeeeHav!

Steven J. Selcuk 10 Nov 29, 2022
Quotes shows you famous quotes to, hopefully, give you enlightment

"Quotes" shows you famous quotes to, hopefully, give you enlightment! You can also save/favorite the quotes that you liked to review later or show to your friends!

Filipe Kunioshi 1 Mar 7, 2022
Show the confetti only when the user is having fun, and if not having fun, don't show it.

SPConfetti - A simple solution to show the confetti to the user. Smoothly starts and stops. Allow set multiply diffrent particles at once. You can chang

Ivan Vorobei 225 Dec 30, 2022
A common use case is wanting to convert device identifiers such as iPhone10,1 to a user friendly name; iPhone 8.

Devices Swift package that contains all devices from https://www.theiphonewiki.com/wiki/Models. A common use case is wanting to convert device identif

null 17 Nov 28, 2022
Generate Swift code from Qt5 user interfaces.

Qlift-uic Description qlift-uic takes a Qt5 user interface description file and compiles it to Swift code for use with QLift. Splitted from main QLift

Dmitriy Borovikov 1 Apr 2, 2022
Turn your Swift data model into a working CRUD app.

Model2App is a simple library that lets you quickly generate a CRUD iOS app based on just a data model defined in Swift. (CRUD - Create Read Update De

Q Mobile 132 Dec 22, 2022
a playground app using `MultipeerConnectivity` to transfor data wirelessly between iOS / iPadOS

README An example app using MultipeerConnectivity to transfor data wirelessly between iOS / iPadOS. Both using Data and Stream to transfer data are su

null 3 Aug 6, 2022
An iOS App which shows live AQI (Air quality index) data for different cities using Web-socket

AQI - Assignment This is an iOS App which shows live AQI (Air quality index) dat

Pratik Prajapati 3 Jul 21, 2022
FlutterNativeDragAndDrop - A package that allows you to add native drag and drop support into your flutter app

native_drag_n_drop A package that allows you to add native drag and drop support

Alex Rabin 21 Dec 21, 2022