Page MenuHomePhabricator

Survey Popup Functionality - display survey announcement in app
Closed, ResolvedPublic

Description

Save the new announcement to be returned from the announcements endpoint (work will be done here). Bypass the
ExploreFeedContentController because we don't want to persist these (and we want to avoid the 2019 fundraising bug).

  • When the user lands on an article that is listed in the announcement, present the panel (wmf_showAnnouncementPanel) after waiting the number of displayDelay seconds from the announcement.
  • Make sure we pass through proper query items (details TBD) so we can track the article title and any other info on the Google docs side.
  • Persist an NSUserDefaults flag of what their confirmation was (Yes or No to survey).
  • If NSUserDefaults value is nil and article title matches with announcement, display survey. If value is Yes or No, do not display survey. We only want them to see this once.
  • For NSUserDefaults key, use the identifier that we decide on in the server-side task (something like SURVEY20IOSV2EN). This is in case we run another campaign later, we want to persist whether they said Yes or No to each campaign separately.

Event Timeline

Survey Parameters:

Survey Questions: (Scaled response questions)

  • Do you ever look at sources and references? 1=always, 5=never
  • How trustworthy was the information in this article? 1=very, 5=not at all
  • Did this seem like a reliable source of information? 1=very, 5=not at all

Wikipedia English Pages where survey prompt will appear:
(This list is initial and will be expanded)
Current Events:

Evergreen/Historical Topics:

*Note 2 pages changed (Advertising, Internet)

We can track feedback from team, comment here.

The average reading time is 350 seconds, in order to not lose users we should set banner wait time to 300 seconds.


Shay To Do:
[x]Survey Landing Page Link & Parameter to pass in
[x]Time for Delay
[]Start date/end date
[x]Submit Survey Qs to Legal (Submitted 04/04/2020)

Note method we are using for creating per-page links to survey:

Adding value to survey URL to ‘prefill’ form with article title:

Here is first part of link to form:
https://docs.google.com/forms/d/e/1FAIpQLSeoMkmpSHiolH5tmEdbpbtbmphXFCWqyGlqj6GBWrOHV-P1hQ/viewform

Extra code w field info:
?usp=pp_url&entry.366807840=Deaths+in+2019 <- text after equal is article title/indicates source. Can be anything but no spaces or special characters or needs to be URL encoded

Put it all together:
https://docs.google.com/forms/d/e/1FAIpQLSeoMkmpSHiolH5tmEdbpbtbmphXFCWqyGlqj6GBWrOHV-P1hQ/viewform?entry.366807840=Deaths+in+2019

Proposed copy:

BodyPlease take a quick survey about this article.
Click-through ButtonStart survey
Dismiss ButtonNo thanks
Privacy footerPrivacy policy [link to page w privacy statement]

@cmadeo please take a look at the above copy and confirm/edit as you see fit

I wonder if we might want to say something like "Help improve Wikipedia by taking a quick survey about this article" (just to appeal to folks as to how they'll be helping us by taking the survey).

Here's a screenshot of what I have so far in case that helps -

Screen Shot 2020-04-09 at 4.54.55 PM.png (1×559 px, 208 KB)

@JMinor this modal dismisses when you tap the background - do you want that action to flag for never showing the survey popup again? Or should that only flag if they tap "Start survey" or "No thanks"?

@Tsevener, will there be additional text in the privacy policy area?

Yeah, I like that better @cmadeo

@Tsevener taps outside the modal should count as a "no thanks" and should set the bit to not show that request again.

@cmadeo @Tsevener
Privacy policy specifics (per legal):

Since we are using a third-party service provider, we need to inform users of that fact before they enter the survey. You can do this by providing a link to the service provider's privacy policy in the invitation to taking the survey.

So the bottom link needs to say "Survey powered by a third-party" and link to Google privacy policy - https://policies.google.com/privacy


The Wikimedia Privacy Statement will be placed before the "submit" button at the end of the survey. We are waiting to get approval from Legal, they will tell us if the privacy statement we need is anything more than the standard statement. (I'll add this to the survey page).

Per sync, we decided to do a startTime of 04/20/2020 and endTime of 04/27/2020 for beta period testing.

@cmadeo @JMinor @SNowick_WMF Here's the latest screenshot, let me know if you want to make any final copy changes!

Screen Shot 2020-04-15 at 9.16.50 AM.png (1×559 px, 243 KB)

  1. Beta test is live, form and links are working and we are getting feedback for timer length. Considering that 350 sec timer may be too long, we will collect more feedback before determining if time needs to be shorter.
  1. @Tsevener will set timer to persist if user goes off page and returns. If user leaves app and comes back to article timer resets to zero.
  1. Should we have a 'pause' or 'Maybe later' function for the survey? @cmadeo mentioned that the donation banner 'maybe later' has had good results but we may not want to add to scope creep for this survey.

Results on timer length according to testers, varies by article, but only 1 tester said the timer was just right.
1= Too soon
2= Just right
3= Too slow, had to wait for it to show up

By article:
Chernobyl disaster: 1,1,1, 2, 3
2019–20 coronavirus pandemic: 1,1,3
Parasite (2019 film): 3

Also has 2 reports of survey not showing up, don't know which articles.

iOS Survey Timer.png (602×1 px, 94 KB)

Per sync, one last remaining piece to this is do pause the timer if you background the app while the timer is running. Timer should pick back up where you left off when you foreground the article again.

Currently the timer resets and starts over if you tap Back from the article and then return. Per @JMinor this is okay as it'll be a little gross to keep track of where the user stopped on a per-article basis.

One last last bug we need to confirm is how the timer works if you navigate to another article FROM the timed article. I imagine the timer stops due to the viewWillDisappear invalidate call but never starts back up again when you return from the navigation stack, as we only start the timer when the article content loads and in this case it's already loaded. We might want to do something in viewDidAppear like

if state == .loaded {
     startSurveyAnnouncementTimer()
}

to fix this.

@JMinor one last confirmation on survey timers - with these final changes, when a user taps 'back' on an article then comes back, the timer starts over from zero. If a user taps a link within the article to navigate away from that article, then taps back to get back to the article, the timer starts over from zero. And when a user is on an article and backgrounds, we pause the timer. When the user foregrounds again, the timer resumes where they left off rather than starting over. Sound good?

Yes, @Tsevener that matches my understanding from sync, so I think we're good.

JMinor claimed this task.