GithubHelp home page GithubHelp logo

satismeter / satismeter-ios Goto Github PK

View Code? Open in Web Editor NEW
7.0 4.0 6.0 29.7 MB

SatisMeter iOS SDK

Home Page: https://satismeter.com

License: MIT License

Ruby 14.26% Objective-C 85.74%
nps survey swift cocoapods objective-c

satismeter-ios's Introduction

SatisMeter iOS SDK

SatisMeter is mobile and web platform for collecting customer feedback, based on Net Promoter Score. This package contains a survey widget that can be easily integrated into any iOS application.

Screenshot

Requirements

  • iOS 12.0+

Installation

SatisMeter is available through CocoaPods and Manual installation from github build.

CocoaPods

To install using CocoaPods, add the following line to your Podfile:

pod "SatisMeter"

Manual Installation

See manual installation instructions.

Installation using .framework build

See .framework installation instructions.

Installation using XCFramework build

See XCFramework installation instructions.

Usage

Author

SatisMeter, https://satismeter.com

License

satismeter-ios SDK is available under the MIT license. See the LICENSE file for more info.

satismeter-ios's People

Contributors

antongorb avatar arbenpnishi avatar esatp avatar jsedlacek avatar ondrejsedlacek avatar s0sh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

satismeter-ios's Issues

Crash on iOS 8

Steps to reproduce:

  1. Wait for SatisMeter view to appear
  2. Dismiss view.
  3. Rotate device

Expected result:
Screen contents do or do not rotate, based on device size.

Actual result:
Crash

Here's the relevant part of the error:

"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSMethodSignature deviceDidRotate:]: unrecognized selector sent to instance 0x7ffe3cee0fd0'"

iOS 9 devices do not demonstrate the problem.

Handling user log out

Is there a way to do this?

There doesn't seem to be a teardown method or something similar.

Swift Package Manager support

Hey team!

Is SPM support on the roadmap? I think users will benefit from that. Since Xcode 12 it is possible to distribute binaries through SPM, and the integration process seems much easier this way.

Kind regards.

Show Satismeter survey after app launch

My application shows an initial loading screen whilst data is downloaded before transitioning to the first screen of my app. When I don't call identify in didFinishLaunching Satismeter never shows and I can't clearly see a way to launch it at another point on the customer journey

Copy & paste code in SatisMeter.m

m1 support adding arm64 for simulator

I integrate Satismeter via manual installation and got this error when try to build on m1 simulator

In ../SatisMeter/libSatisMeter.a(SatisMeter.o), building for iOS Simulator, but linking in object file built for iOS, file '../SatisMeter/libSatisMeter.a' for architecture arm64

Is there anyway I can solve this?

SatisMeter is already shown

Hi, I'm getting "SatisMeter is already shown" from our app when I trying to force show a Survey after a user closed it sometime in the past.

I can't find any SatisMeter related views in views hierarchy. So I assume it's really closed.

Of course, this happens only when application stays in memory. After the new app start it's ok.

Library not compatible with Bitcode-enabled apps

Hi guys - been using Satismeter on my website for a while and would like to integrate it onto iOS. I'm getting an error when trying to archive the project with the Satismeter cocooapods installed saying it can't be exported because it isn't bitcode enabled - see this SO post for reference: http://stackoverflow.com/questions/34666247/bitcode-bundle-could-not-be-generated-because-ios-charts

I think just building a new version of the framework in XCode 7 should solve the issue

Allow calling identifyUserWithUserId multiple times

If called second time:

  • If the survey is already shown, do nothing
  • If the survey is not shown, but /api/widget request already in progress, cancel previous request and perform a new request with new data
  • Otherwise perform a new request with new data and show widget according to the result of it

400 Bad Request

I get a 400 bad request anytime I fill in a survey. See below for sample response in the log.

Error: Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={NSLocalizedDescription=Request failed: bad request (400), NSErrorFailingURLKey=https://app.satismeter.com/api/responses, com.alamofire.serialization.response.error.data={length = 47, bytes = 0x7b226572 726f7273 223a5b7b 22746974 ... 66696564 227d5d7d }, com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x282085b00> { URL: https://app.satismeter.com/api/responses } { Status Code: 400, Headers {
    "Access-Control-Allow-Headers" =     (
        "Content-Type,Auth-Token"
    );
    "Access-Control-Allow-Methods" =     (
        "PUT,POST"
    );
    "Access-Control-Allow-Origin" =     (
        "*"
    );
    "Access-Control-Expose-Headers" =     (
        "Location,Auth-Token"
    );
    Connection =     (
        "keep-alive"
    );
    "Content-Length" =     (
        47
    );
    "Content-Type" =     (
        "application/json; charset=utf-8"
    );
    Date =     (
        "Thu, 20 Feb 2020 21:53:15 GMT"
    );
    Etag =     (
        "W/\"2f-j2bd44CrSw0K37KdSWGeWzQmJcc\""
    );
    Server =     (
        Cowboy
    );
    "Strict-Transport-Security" =     (
        "max-age=15552000; includeSubDomains"
    );
    Vary =     (
        "Accept-Encoding"
    );
    Via =     (
        "1.1 vegur"
    );
    "X-Powered-By" =     (
        Express
    );
    "X-Request-Id" =     (
        "1f30905a-64e6-4262-8380-30fed0c7e6b0"
    );
} }}, <NSHTTPURLResponse: 0x282085b00> { URL: https://app.satismeter.com/api/responses } { Status Code: 400, Headers {
    "Access-Control-Allow-Headers" =     (
        "Content-Type,Auth-Token"
    );
    "Access-Control-Allow-Methods" =     (
        "PUT,POST"
    );
    "Access-Control-Allow-Origin" =     (
        "*"
    );
    "Access-Control-Expose-Headers" =     (
        "Location,Auth-Token"
    );
    Connection =     (
        "keep-alive"
    );
    "Content-Length" =     (
        47
    );
    "Content-Type" =     (
        "application/json; charset=utf-8"
    );
    Date =     (
        "Thu, 20 Feb 2020 21:53:15 GMT"
    );
    Etag =     (
        "W/\"2f-j2bd44CrSw0K37KdSWGeWzQmJcc\""
    );
    Server =     (
        Cowboy
    );
    "Strict-Transport-Security" =     (
        "max-age=15552000; includeSubDomains"
    );
    Vary =     (
        "Accept-Encoding"
    );
    Via =     (
        "1.1 vegur"
    );
    "X-Powered-By" =     (
        Express
    );
    "X-Request-Id" =     (
        "1f30905a-64e6-4262-8380-30fed0c7e6b0"
    );
} }, {
    errors =     (
                {
            title = "Campaign not specified";
        }
    );
}

Xcode 14 compatibility when adding the lib from Cocoapods

If you install this lib as a pod and open it in a new Xcode (starting from 14), you'll see an error message saying that Signing for SatisMeter requires a development team. Select a development team in the Signing & Capabilities editor.

The only workaround is to add this as a framework to an existing project as described here. (The manual also uses a very old Xcode version ๐Ÿ™‚)

P.S. workarounds mentioned here do not work.

Give a way to force showing the survey

Let's give users a way to force showing the survey for testing purposes.

From our customer:

Give a way to test the display of the popup. We aren't able to trigger it correctly by adjusting the createdAt date for testing.

Warnings in builds

Report from our customer:

we are getting warnings w/r/t external libraries that come from libSatisMeter.o:

GenerateDSYMFile /Users/mbabin/Library/Developer/Xcode/DerivedData/WhenIWork-awgxyilzflaxlzgbdwokzvmqcvap/Build/Products/Debug-iphonesimulator/WhenIWork.app.dSYM /Users/mbabin/Library/Developer/Xcode/DerivedData/WhenIWork-awgxyilzflaxlzgbdwokzvmqcvap/Build/Products/Debug-iphonesimulator/WhenIWork.app/WhenIWork

cd "/Users/mbabin/Projects/When I Work/wheniwork-ios"

export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil /Users/mbabin/Library/Developer/Xcode/DerivedData/WhenIWork-awgxyilzflaxlzgbdwokzvmqcvap/Build/Products/Debug-iphonesimulator/WhenIWork.app/WhenIWork -o /Users/mbabin/Library/Developer/Xcode/DerivedData/WhenIWork-awgxyilzflaxlzgbdwokzvmqcvap/Build/Products/Debug-iphonesimulator/WhenIWork.app.dSYM



while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/Foundation-3DFYNEBRQSXST.pcm: No such file or directory

note: Module debugging should be disabled when shipping static libraries.

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/UIKit-1V5UHAPTOD24G.pcm: No such file or directory

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/SystemConfiguration-354UAJE49HRJF.pcm: No such file or directory

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/Darwin-38I6DLZ5IH61J.pcm: No such file or directory

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/MobileCoreServices-N94D31PLFESQ.pcm: No such file or directory

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/CoreGraphics-N94D31PLFESQ.pcm: No such file or directory

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/Security-T0W5HZGV3ZZ1.pcm: No such file or directory

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SatisMeter.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/ObjectiveC-1RQA2RIXJIE19.pcm: No such file or directory

while processing /Users/mbabin/Projects/When I Work/wheniwork-ios/StatisMeter/libSatisMeter.a(SMAFURLRequestSerialization.o):

warning: /Users/mac/Library/Developer/Xcode/DerivedData/ModuleCache/CZ5J6EE9YZDK/CoreFoundation-J9ZOXGK4ZTRR.pcm: No such file or directory

I'm not sure if by using static libraries that we MUST turn off Modules, but we'd like to not to if we don't have to.

Position of survey box

is there a way to show the survey box on top or in the middle? it works on web but not in sdk. Can anyone help me?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.