urbanapps / armchair Goto Github PK
View Code? Open in Web Editor NEWA simple yet powerful App Review Manager for iOS and OSX in Swift
License: MIT License
A simple yet powerful App Review Manager for iOS and OSX in Swift
License: MIT License
Hey,
When I tap "Write a Review" in SKStoreProductViewController
nothing happens. Seems I'm not the only one having this issue. Is this something you're aware of?
I installed Armchair via cocoapods. The installation worked fine. I do have a couple of issues. It seems that the version that is installed is not the latest version. Example
In the documentation is referred to this method:
Armchair.ratingConditionsHaveBeenMet() -> Bool
This method is 'private' in the delivered code and therefore not reachable.
Also, the KeyDeclinedToRate returns 'true'. This was never set, how is that possible ? It seems to me that this state does not allow to show the rating prompt.
Any comments / advice ?
I've tried about 3 different methods of trying to add the -DDebug flags to allow testing of the Armchair prompts. No matter what I've tried i get the "Debug is disabled on release builds. If you really want to enable debug mode, add "-DDebug" to your Swift Compiler - Custom Flags section in the target's build settings for release" message when the app starts. Am i doing anything wrong?
What I have tried so far:
I also tried this ruby script in my podfile to set the Debug flags for the cocoapods when the pods are installed. Again no changes in Armchairs' error message when i build the app.
I found and explored the Schemes area and can confirm that i'm DEFINITELY building and running the app in debug mode, not release mode (and yet still get that message each time which suggests Armchair thinks i'm running a release build).
Manager.defaultManager.debugEnabled = debugEnabled
]. Obviously I know this is not how i'm supposed to do this and will of course revert the file after, but this was seriously the only way I found to test the Armchair prompts. And once i made this change, Armchair debug mode worked perfectly and I was able to tweak the rating prompt.So if anyone has feedback or advice on what I might be doing wrong or why Armchair isn't recognizing my debug flags when set in the Pods Build settings, that would be very helpful.
About my system: Xcode 7.3, building for iOS 9.3 and testing on Simulator iPhone 5S.
I am getting this error from iTunes Connect after uploading to App Store and I haven't been able to figure out how to resolve it:
"Missing load commands - The executable at '/Payload/Affection Connection.app/Armchair.bundle/Armchair' does not have the necessary load commands. Try rebuilding the app with the latest Xcode version. If you are using third party development tools, contact the provider."
Any ideas on how to proceed are appreciated!
Heaps of errors and warnings when opening in Xcode 7 beta.
Could you please add support for Carthage?
The function ratingConditionsHaveBeenMet() is not public. It would be nice to be able to access this function to present any custom messages to the user before showing the rate alertview
It doesn't work with iOS 7?
Hi there,
Say I only want to use the significant event tracker and disable the daysUntilPrompt
and usesUntilPrompt
notifications. Does setting these to 0 disable similarly to the remind functionality?
How can i solve this error when running app in physical iphone 5s
Library not loaded: @rpath/Armchair.framework/Armchair
Hi,
I set Armchair this way:
Armchair.appID("1044050208")
Armchair.significantEventsUntilPrompt(0)
Armchair.daysUntilPrompt(0)
Armchair.usesUntilPrompt(3)
And expected Armchair will show up on the third sessions, but nothing happened.
When I click this this (Remind Later) button iTunes or StoreKit opens anyway.
Also it isn't enough debug mode only. It appears only when I placed:
Armchair.debugEnabled(true)
Armchair.userDidSignificantEvent(true)
My project is configured to enable debug:
Armchair.debugEnabled(true)
added to my codeOn this issue #29 problem has been solved for Cocoapods. But what about Carthage?
There is this nice blog post about asking review to user: Getting from ⭐️⭐️ to ⭐️⭐️⭐️⭐️⭐️
Basically the main idea is to ask for review after an update:
It’s a fair trade. We give a little something and ask for a little something.
This could lead to a new great feature to Armchair. Don't you think so?
First thank you for putting this library out there, I love the simplicity and documentation. I see a couple of methods to reset counters not present in 0.1.1 but I'm unable to install 0.1.2 via cocoapods.
I get the error below when trying a pod install
[!] Unable to satisfy the following requirements:
- `Armchair (~> 0.1.2)` required by `Podfile`
None of your spec sources contain a spec satisfying the dependency: `Armchair (~> 0.1.2)`.
You have either:
* out-of-date source repos which you can update with `pod repo update`.
* mistyped the name or version.
* not added the source repo that hosts the Podspec to your Podfile.
Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default.
Any chance there's an upcoming update for cocoapods?
Environment references:
Carthage version: 0.6.12
xcodebuild -version: Xcode 7.3 Build version 7D175
--no-build? no
--no-use-binaries? no
--use-submodules? no
Cartfile:
github "UrbanApps/Armchair"
Cartfile resolved:
github "UrbanApps/Armchair" "0.1.2"
Carthage Output:
<..>$ carthage update
*** Fetching Armchair
*** Downloading Armchair.framework binary at "0.1.2"
*** xcodebuild output can be found in /var/folders/xx/zhysw05j1pn9jw3vypwb3rrw0000gn/T/carthage-xcodebuild.ky9ANZ.log```
Armchair.framework is in Xcode in sections:
• Link Binary With libraries
• Copy Bundle Resources
• Embed Frameworks, with Code Sign On Copy switched on
• Build Rules (SCRIPT: /usr/local/bin/carthage copy-frameworks for source files : $(SRCROOT)/Carthage/Build/iOS/Armchair.framework. The folder exists with the framework in)
I was having at first an issue with an 'image not found' message as I missed to add the framework library Armchair in the Embed Frameworks section of Build Phases (Xcode 7.3).
Done that I was happily waiting the sw run but I also got an unexpected 'symbol not found' error message:
dyld: Symbol not found: __TMPdCSs18_HeapBufferStorage Referenced from: /Users/<..>/Library/Developer/Xcode/DerivedData/JotAgenda-gazubqkikzwwstckckciztnqufsb/Build/Products/Debug-iphonesimulator/Armchair.framework/Armchair Expected in: /Users/<..>/Library/Developer/CoreSimulator/Devices/C61B939F-2F90-4314-AA8C-B36C15E2D8C0/data/Containers/Bundle/Application/058F8711-F90C-48FC-A7B4-31D0298D97B9/JotAgenda.app/Frameworks/libswiftCore.dylib in /Users/<..>/Library/Developer/Xcode/DerivedData/JotAgenda-gazubqkikzwwstckckciztnqufsb/Build/Products/Debug-iphonesimulator/Armchair.framework/Armchair
Am I missing something else? Is it an issue related to the framework generation ?
I also attach the Carthage zipped folder coming out the update command.
BTW: the checkout folder is not generated.
Is that correct ?.
Thank you for any help.
Stefat
Here and here I saw two newer examples of such frameworks like this but they both have a great new addition to the classic approach of just asking users for a rating:
They add the ability to let users who don't like specific parts directly give feedback instead of rate the app. This has to advantages: It helps to get feedback from users to improve the app and leads to less negative ratings.
Could we add such a feature into Armchair as well? I would imagine an option named "enableTwoFactorProcess" and if the user chooses a low rating (or dislikes the app) then Armchair opens a specified email address to send feedback to as a default option. As an addition users might get an option to use their own feedback implementation.
What do you think?
In many of my apps, the owner requested that the app review popup shows in specific scenarios: The user viewed "x" number of screens, and has gone through one/more specific actions.
You can't cover these cases just by using a generic significant event. Because of this, I'd have to override the behaviour for Armchair and only trigger the popup manually, when all conditions are met, thus a lot of code to handle.
A good solution would be to use events per category and add the minimum number of each category in order to trigger the popup.
Thanks
Would be great if you created a cocoapod
Opens in storekit does not work for landscape only apps!
After following the installation steps exactly, I still cannot import Armchair
, and Xcode is giving an error - No such module 'Armchair'
I'm not really sure where to go from here. I'm using the latest Xcode and latest OSX.
When I go to archive the application, I get an error that the module is not found. I found this answer on StackOverflow here, but I am unsure how to follow the solution. Is there any fix to this? Thanks!
It would be nice if for each tagged release you enabled pre built frameworks also - this would enable Carthage users to have faster build times.
See https://github.com/Carthage/Carthage#archive-prebuilt-frameworks-into-one-zip-file for details on how to implement this. (it's pretty easy)
I added -DDebug flag to my project.
Then in code did:
#if Debug
Armchair.debugEnabled(true)
#endif
But always get message:
[Armchair] Debug is disabled on release builds.
[Armchair] If you really want to enable debug mode,
[Armchair] add "-DDebug" to your Swift Compiler - Custom Flags
[Armchair] section in the target's build settings for release
Source:
public func debugEnabled(debugEnabled: Bool) {
#if Debug
Manager.defaultManager.debugEnabled = debugEnabled
#else
print("[Armchair] Debug is disabled on release builds.")
print("[Armchair] If you really want to enable debug mode,")
print("[Armchair] add \"-DDebug\" to your Swift Compiler - Custom Flags")
print("[Armchair] section in the target's build settings for release")
#endif
}
Hey there !
In my App I display a rate button, I want to hide that button if the user already rated the actual version of the app. Looking around I found this func userHasRatedCurrentVersion which will work great but turns out it's private and there is no public access in the actual API to perform such validation.
Maybe I'm missing some another way to do this?
Thanks!
Is there a way to manually reset all counters (uses, significantEvents, etc)? I don't want to change the thresholds, just reset all counters.
I want to know if Armchair show alert to rate automatic when configure the Armchair.significantEventsUntilPrompt(2)
and Armchair.userDidSignificantEvent(true)
. Or I need to call Armchair.showPrompt()
to show alert?
I just tried different approaches to get Armchair running in an Objective-C project but I wasn't successful. Please either add instructions on how to get Armchair running in Objective-C projects or add a clear statement that Armchair only supports Swift projects in the requirements of the README.
Hi,
I try to use armchair. I use this in my AppDelegate
Armchair.appID("12345678")
// Demo mode
Armchair.showPrompt()
And I added a new language under the project tab. The prompt is always shown in english. Any hints?
Thanks for helping in advance.
We're setting up Armchair in our app using the very simple 1-step process. Our App ID is 100% correct, I've tried filling out additional fields, and I've tried setting debugEnabled(true)
as well.
Calling showPrompt()
provokes no response. onWillPresentModalView
and shouldPromptClosure
are both not firing either.
We have no way of seeing what error is being thrown or what is going on. We'd really love to use your SDK and we're trying to release ASAP, but if we can't figure this out we might need to turn to another product in the meantime until we can get this sorted.
Adding the following line on Cartfile
:
github "UrbanApps/Armchair"
This lead to an error on Cartage update:
No tagged versions found for github "UrbanApps/Armchair"
You should use UIAlertController instead.
Really... Armchair.appID("12345678")
Where do i find it...
I am getting this 'warning: embedded dylibs/frameworks only run on iOS 8 or later' while archiving project but it is working properly on iOS 7..so any ways to fix this warning or can I ignore this ?
Is there any pod installation way?
Same as #42
using pod to get Armchair as a dependency, but the alert is always in English
Has this something to do with the swift+pod+framework issue?
Any help would be very appreciated.
Thanks
Hello,
I trying to work with your framework.
If I put showPromptIfNecessary in a normal view all work fine.
But if I put the same code inside a navigation controller, I saw the modal view asking me what I want to do, but nothing happens after pressing Rate.
What could I look at to fix this?
Many thanks,
Massimo
I am using Armchair framework as the app review manager for my app. The app is written in Swift (complies with Swift 1.1) and I am running Xcode 6.2 with base SDK 8.2 and deployment target of 8.0.
I am facing a curious issue while doing a release/ad-hoc build of the app- the app crashes right after getting started. I symbolicated the crash logs and here's what I see-
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2015-05-08 13:01:54.192 -0700
Launch Time: 2015-05-08 13:01:52.013 -0700
OS Version: iOS 8.3 (12F70)
Report Version: 105
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000001007643d8
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
__TFC8Armchair7ManagerP33_0F5394B43958D8E2A7FE7B1C7DE959CE18defaultReviewTitlefS0_FT_SS Armchair.swift:1566
__TFC8Armchair7ManagerP33_0F5394B43958D8E2A7FE7B1C7DE959CE18defaultReviewTitlefS0_FT_SS Armchair.swift:695
__TFC8Armchair7ManagerP33_0F5394B43958D8E2A7FE7B1C7DE959CE15showRatingAlertfS0_FT_T_ Armchair.swift:699
__dispatch_call_block_and_release + 20
__dispatch_client_callout + 12
__dispatch_main_queue_callback_4CF + 1604
___CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 8
___CFRunLoopRun + 1488
_CFRunLoopRunSpecific + 392
_GSEventRunModal + 164
_UIApplicationMain + 1484
11 <MyAppName> 0x0000000100292560 0x1000e8000 + 1746272
_tlv_get_addr + 176
When I run the app on simulator/run directly on the device from Xcode, everything runs perfectly.
Any pointers from anyone? Do I need to upgrade to XCode 6.3? Is it a known issue?
any plan to migrate the pod to swift 3 syntax?
I think beginning with iOS 9 this check
UIDevice.current.model.range(of: "Simulator") != nil
will never succeed and so current developers will not get console logs and possibly wonder why nothing happens when starting to rate.
Possible alternate methods are stated here
Hello,
I updated XCode to 6.3 today, which includes Swift 1.2, and that seems to have broken Armchair. Several of the errors I think I was able to fix myself (implicitly casting NSString
into String
is no longer allowed, it seems), but I'm getting a few errors which, frankly, I'm not knowledgable enough to fix.
All of these are in Armchair.swift, so far.
public class StandardUserDefaults: ArmchairDefaultsObject
renders "Type StandardUserDefaults does not conform to protocol ArmchairDefaultsObject.private var userDefaultsObject:ArmchairDefaultsObject? = StandardUserDefaults()
renders "StandardUserDefaults is not convertibel to ArmchairDefaultsObject?"let currentVersion = NSBundle.mainBundle().objectForInfoDictionaryKey(kCFBundleVersionKey) as? NSString
renders "Type of expression is ambiguous without more context."I'm going to do my best to get some answers for these, but I thought it might be helpful for you to know (and maybe you have some quick solutions).
Move localizations into separate bundle as in Appirater and UAAppReviewManager.
Otherwise they're displayed in AppStore page.
Hey!
When I write this in my Cartfile
:
github "UrbanApps/Armchair" == 0.1.2
I can't deploy my app to a device. It looks like carthage does something "smart" by downloading the .framework-file attached to that tag. The .framework file in this case has been built by an older compiler (probably a previous version of xcode), and hence I can't deploy it :(
So my question is, why is there a .framework file attached to the tag? And could we get rid of it?
When looping through window.subviews
the next responder object for the 2 subviews returned were both windows (instead of a UIViewController). Moved call to showPrompt()
to a different area as a temporary solution.
Call to #userDidSignificantEvent was taking place upon dismissing an AVPlayerViewController which was presented modally over a UIPageViewController (that was embedded within a UINavigationController).
I didn't spend too much time diagnosing this, but my assumption is that the presented view controller had not been fully dismissed yet, causing the unexpected behavior... If I have time later, I'll try to dig in and determine if that was actually the cause.
Hey!
Let me start of by thanking you for writing this. Much love.
I ran across a bug and wanted to report it, not sure if I'm missing something. If it's a bug I'll gladly fix it and send a PR.
If daysBeforeReminding
is set to zero and remindButtonTitle
is set, the remind Button appears in the rate pop up. The bug seems to be in showsRemindButton()
showsRemindButton()
should return false if daysBeforeReminding
is set to zero.
When the library will show the first alert with default settings? ( Armchair.appID("12345678") )
cocoapods supports swift libraries now
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.