Giter Club home page Giter Club logo

Comments (20)

themisterholliday avatar themisterholliday commented on September 13, 2024 1

Go for it! If you have questions let me know and I can help out. 👍

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024 1

#27 Opens up the email creation dialog on iOS to write to Jeff if the user reports they do not like the app. This app review flow was added using WaitForIt.

The update view that lists new features still needs to be added. I waited until #27 was merged into develop because I wanted to use the PopupDialog pod for the view to list the new features associated with an app update. If you have the copy you'd like to display in the next app update you can list it here or send it to me on slack and I can get this up in a pr soon.

from se-daily-ios.

TheHollidayInn avatar TheHollidayInn commented on September 13, 2024 1

The fastlane route sounds good to me if you think that is a good option.

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024 1

The fastlane route turned out to be more complex than I originally imagined. The challenges there were gathering up all of the different internationalized release_notes.txt files and creating or adding these strings to Localizable.strings.

My implementation doesn't rely on the release notes, you supply what body text you'd like in that what's new pop up, you can copy the release notes into Localizable.strings if you like. But this way there is flexibility in what's displayed in app.

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024

I'd love to take a shot at this issue.

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024

I just looked at the WaitForIt implementation and tested it in the se-daily app, and WaitForIt doesn't execute on version bumps. This is what I tried:

struct NewFeature: ScenarioProtocol {
    static func config() {
        maxExecutionsPermitted = 1
    }
}

What executions means in this context is exactly that, executions in the entire life of the app on someone's phone, not per app version. This app version bump logic can be done through the customConditions closure, but I think it defeats the purpose of introducing this pod if this logic needs to be implemented.

On the other hand, using this pod for the app rating/review pop up right now sounds like a good idea.

What were your thoughts here? That the version bump detection would be provided out of the box by WaitForIt?

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024

About "a popup that ask[s] people for a rating then takes them to either the app store to rate or (if the score is low) opens up an email to send to us with feedback," Apple recently started not allowing custom prompts: https://developer.apple.com/app-store/review/guidelines/ §1.1.7 bullet two.

Apple's review prompt could be called and combined with other custom logic inside of customConditions in WaitForIt. Apple's prompt isn't guaranteed to appear. I don't believe the review score (stars) is accessible via API, so I don't see how an email prompt on low score can't be done.

I think calling Apple's prompt along with other custom logic is the preferred way of doing this. A link to the app store that opens up the "enter text review" for se-daily can be provided in app still, and a separate "email se-daily" button can be provided too.

Thoughts?

from se-daily-ios.

themisterholliday avatar themisterholliday commented on September 13, 2024

I was assuming there would be an easy way to implement the updated version trigger with WaitForIt. But that’s alright. If you can figure out how to do do it with customConditions that’s cool.

If not I’ll find another way to do it and if you’d like to try to make the ratings/review work, that is enough of a feature to have the WaitForIt pod.

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024

What I'm thinking is if the version trigger is done with WaitForIt in customConditions, then I'll have to use UserDefaults to store the "last seen app version" and check it against the current app version on app start up. What I believe the point of WaitForIt is to abstract away UserDefaults. Right now I think it's probably better to just implement the new feature pop up outside of WaitForIt, which is what I'll attempt to do.

As for the ratings pop up, yea I can do that with WaitForIt.

from se-daily-ios.

themisterholliday avatar themisterholliday commented on September 13, 2024

For the review maybe just a window that asks “are you enjoying the app?” Instead of a rating prompt. Then if they say no we push to an email and if they say yes we bring up the in app rating prompt.

I think that is still okay per apple

from se-daily-ios.

themisterholliday avatar themisterholliday commented on September 13, 2024

So I believe getting the version and saving it either with WaitForIt or an own custom way should be pretty simple. UserDefaults is easy to work with and I think the version code is as easy as this:

if let text = Bundle.main.infoDictionary?["CFBundleVersion"]  as? String {
    print(text)
}

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024

The saving it with WaitForIt is the part I don't understand. I don't see how WaitForIt provides a key-value store for saving values. I do understand how to use UserDefault in conjunction with WaitForIt's customConditions to check for the last app version opened.

My point is, I don't see the advantage of using WaitForIt in this "app update" case since all WaitForIt will do is run the customConditions block. Since the app update case is always checked, I assume is only meant to be executed once, executed immediately upon app launch of the new app version (i.e.: not taking advantage of WaitForIt's "events tracking"), I don't believe any other WaitForIt feature will be used in this app update case.

This is my understanding so far, I'll continue to look into it.

from se-daily-ios.

themisterholliday avatar themisterholliday commented on September 13, 2024

I see what you’re saying. I agree, I don’t see any reason to use the WaitForIt library for the app update view. I had the idea that we might use the time features, i.e. only show the update view after a certain amount of time in app. But that doesn’t make much sense.

Let’s do something custom for the app update view and WaitForIt with the ratings prompt. I believe there’s a benefit to only give the rating prompt if a user has spent a certain amount of time in app or has had a certain number of sessions. If that makes sense.

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024

I've got a branch based off the wait-for-it branch, https://github.com/eddies5/se-daily-iOS/tree/update-new-features-prompt that adds the new features prompt on app updates. I want to wait until the wait-for-it branch gets merged because the new features prompt uses the PopupDialog pod.

from se-daily-ios.

themisterholliday avatar themisterholliday commented on September 13, 2024

That's awesome! I saw the project you built. Really cool! We can wait since this is really a requested feature anyway.

from se-daily-ios.

TheHollidayInn avatar TheHollidayInn commented on September 13, 2024

Is this complete now?

from se-daily-ios.

themisterholliday avatar themisterholliday commented on September 13, 2024

Not yet.

from se-daily-ios.

TheHollidayInn avatar TheHollidayInn commented on September 13, 2024

Do these need to be added?:

  • a view when someone updates to tell the the new features
  • or (if the score is low) opens up an email to send to us with feedback

And can they be added using WaitForIt? (edit) I can see how we can with custom conditions!

from se-daily-ios.

TheHollidayInn avatar TheHollidayInn commented on September 13, 2024

Ah okay, so you just need the release notes? Is there a automatic way we can get these from fastlane? Or remotely configure these in Firebase?

from se-daily-ios.

eddies5 avatar eddies5 commented on September 13, 2024

The release notes would work. I bet we could include a different file in the project as well if we wanted different copy in the app. Fastlane does include a release_notes.txt in its metadata folder. I can experiment with some combination of build phase and SwiftGen so that the latest release notes are always compiled into the app, and using SwiftGen would allow these in app dialog to also internationalized.

It could be remotely configured on Firebase as well, we'd have to handle internationalization somehow in this case too.

from se-daily-ios.

Related Issues (20)

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.