Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

⬆️ Upgrade to latest everything 🎉 #680

Closed
shankari opened this issue Oct 16, 2021 · 136 comments
Closed

⬆️ Upgrade to latest everything 🎉 #680

shankari opened this issue Oct 16, 2021 · 136 comments

Comments

@shankari
Copy link
Contributor

At long last, after clearing the decks with
e-mission/e-mission-phone#799
e-mission/e-mission-phone#800
e-mission/e-mission-phone#801
e-mission/e-mission-phone#802

I'm ready to start the annual ritual of upgrading to the most recent version of everything.
I will also plan to address #678
and add silent push notifications to android as well to address #677

@shankari
Copy link
Contributor Author

shankari commented Oct 17, 2021

Switched to cordova [email protected], which is the most recent version (https://cordova.apache.org/announcements/2021/08/16/cordova-android-10.1.0.html).

It generated a warning about the targetSDK version being 30+, which is also required for any updates to the play store.

Looking at the behavior changes between android 10 (API 29) and android 11 (API 30), we have:
https://developer.android.com/about/versions/11/behavior-changes-all

  • One-time permissions: Gives users the option to grant more temporary access to location, microphone, and camera permissions.
    • not significant, just another failure case which we need to handle
  • Permission dialog visibility: Repeated denials of a permission implies "don't ask again."
    • not significant, we already have to open the app settings to get our "Always" permission anyway
  • Auto-reset permissions from unused apps
  • Background location access:
    • need to request foreground and background separately: not an issue since we don't actually request foreground access
    • "Allow all the time" not visible in system dialog; need to go to the app settings screen to fix: not an issue since we already do this

@shankari
Copy link
Contributor Author

ok, so the hibernation changes are pretty evil and are going to get more evil in android 12 (API 31). In API 31, if the app is not launched (in the foreground) "for a few months", the app hibernates.

In API 30, the app runtime permissions (including location) are reset.
In API 31:

  • the app runtime permissions are reset
  • the app cannot run jobs or alerts from the background,
  • the app cannot receive push notifications
  • files in the app cache (including the DB?) are removed.

This is pretty darn terrible. The location permission will be reset, and we won't have the ability to notify the user that anything is wrong through notifications.

Apparently, if your app is primarily targets with background operation, you can ask users to exempt the app from hibernation. We are going to have to go down this route; fortunately, there is a programmatic way to do this.
https://developer.android.com/topic/performance/app-hibernation#exemption

Maybe we should just upgrade to API 31 right now and be a bit more future-proof. Let's see what other changes API 31 needs.

@shankari
Copy link
Contributor Author

Note also that we can't put this off forever because, in Dec 2021, this reset permission is going to come to devices that: "Runs Android 6.0 (API level 23) to Android 10 (API level 29), inclusive, and is powered by Google Play services" as long as the targetSDK is 11. And we need targetSDK 11 for any native code updates.

So we may be able to limp along for a bit but will have to deal with it fully sometime.

@shankari
Copy link
Contributor Author

Maybe we should just upgrade to API 31 right now and be a bit more future-proof. Let's see what other changes API 31 needs.
https://developer.android.com/about/versions/12/behavior-changes-all

  • Bunch of UI improvements that we are not going to take advantage of just yet
  • "restricted app standby bucket": needs further investigation
  • microphone/camera visibility: unused
  • package visibility into other apps: unused
  • crypto algorithms: unused (directly)
  • clipboard access: unused
  • system dialogs: unused
  • untrusted touch events/overlay: unused
  • pressing back button: no custom implementation; should test
  • custom notifications: unused
  • approximate location: user may give only approximate; what does this do for background?
  • motion sensor rate limiting
  • data handling attribution access
  • pending intent mutability
  • foreground service launch restrictions

@shankari
Copy link
Contributor Author

The foreground service launch restrictions are the worst. Basically, we can't restart the foreground service except for exemptions. Most of those don't apply.

  • The most relevant option is: Your app receives an event that's related to geofencing or activity recognition transition. We should then be able to start the app when we do need the fine grained location access. But what happens if the service is killed while we are on the trip? That is not a geofence transition, and we are in the background. Or do they argue that this never happens.

  • There is also an option to turn off battery optimizations for the app. We may have to fallback to that if the foreground service can indeed be killed during a trip (and I don't see any guarantees that it won't be).

@shankari
Copy link
Contributor Author

shankari commented Oct 17, 2021

Given the number of changes in android 12, including the foreground service changes, and the ominous "motion sensor rate limiting", I am going to stick with android 11 for now.

I will add the hibernation check for now, to get that out of the way, although it is less important with target API 30, where background operations and notifications are not restricted.

@shankari
Copy link
Contributor Author

shankari commented Oct 17, 2021

First, upgrading android...

  • changed the targetSDKVersion to 30
$ npx cordova platform rm android
Removing android from cordova.platforms array in package.json
$ rm -rf plugins/
$ rm -rf platforms/
  • reinstalled, so far, so good
$ npx cordova platform add [email protected]
Installing "cordova-plugin-local-notification" for android
android-sdk version check failed (/Users/kshankar/e-mission/e-mission-phone/platforms/android/cordova/android_sdk_version), continuing anyways.
...
Subproject Path: CordovaLib
Subproject Path: app
Adding phonegap-plugin-barcodescanner to package.json
config file *-Info.plist requested for changes not found at /Users/kshankar/e-mission/e-mission-phone/platforms/android/*-Info.plist, ignoring
config file *-Info.plist requested for changes not found at /Users/kshankar/e-mission/e-mission-phone/platforms/android/*-Info.plist, ignoring
config file *-Info.plist requested for changes not found at /Users/kshankar/e-mission/e-mission-phone/platforms/android/*-Info.plist, ignoring
cordova-plugin-androidx-adapter: Processed 160 source files in 5938ms
  • build fails
$ npx cordova build android
> Task :app:compileDebugJavaWithJavac
/Users/kshankar/e-mission/e-mission-phone/platforms/android/app/src/main/java/org/apache/cordova/whitelist/WhitelistPlugin.java:25: error: cannot find symbol
import org.apache.cordova.Whitelist;
                         ^
  symbol:   class Whitelist
  location: package org.apache.cordova
/Users/kshankar/e-mission/e-mission-phone/platforms/android/app/src/main/java/org/apache/cordova/whitelist/WhitelistPlugin.java:32: error: cannot find symbol
    private Whitelist allowedNavigations;

@shankari
Copy link
Contributor Author

Whitelist is deprecated in cordova android 10.x and greater (https://github.com/apache/cordova-plugin-whitelist). However, removing it requires updating the ionic plugin.

$ npx cordova plugin rm cordova-plugin-whitelist
The plugin 'cordova-plugin-whitelist' is required by (cordova-plugin-ionic), skipping uninstallation. (try --force if trying to update)

@shankari
Copy link
Contributor Author

We are currently at cordova-plugin-ionic 5.4.7, currently latest is 5.5.1, so hopefully we won't have too much of an interface change. And the whitelist dependency was removed in ionic-team/cordova-plugin-ionic@34a202e#diff-6813833f33103dfcaa583d4f09e06dc84c0ce8ddd34c8b567b56c9728be58389 in v5.5.0, so upgrading to v5.5.1 should be good enough.

Builds now!!

BUILD SUCCESSFUL in 11s
49 actionable tasks: 18 executed, 31 up-to-date
Built the following apk(s):
	/Users/kshankar/e-mission/e-mission-phone/platforms/android/app/build/outputs/apk/debug/app-debug.apk

@shankari
Copy link
Contributor Author

Note other android 10 updates (https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html), notably:

  • migration away from file:// URLs (which we should not be using anyway). Does this mean that we don't need a custom webview and/or the http adapter plugin?
  • update plugins to androidx. we should probably:
    • update our plugins to androidx
    • update other plugins to the most recent version
    • we do still have the androidx adapter in case the other plugins have not been adapted
  • the release generates an aab instead of an apk by default, consistent with the new packaging requirements
    (https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html). We will need to upgrade our packaging scripts.

@shankari
Copy link
Contributor Author

shankari commented Oct 17, 2021

wrt file:// plugins, we use them only in the context of the post-trip prompt.

www//js/incident/post-trip-prompt.js|51| icon: 'file://img/icon.png',
www//js/survey/multilabel/post-trip-prompt.js|54| icon: 'file://img/icon.png',
www//js/control/general-settings.js|242| icon: 'file://img/icon.png',

so we need to see how the local notifications work with it.
If this is too complex, I may drop support for the trip end notifications plugin.

Fortunately, it is pretty clear that since we were using the webview plugin all along, it won't really affect us in many other ways.
apache/cordova-android#1137 (comment)

I'm going to downgrade the priority of this.

@shankari
Copy link
Contributor Author

Android Studio cannot open the project, though.
"Gradle sync failed: This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 4.2 or newer."

Trying to figure out how to upgrade the android support plugin. Might just upgrade to a newer version of Android studio if it is easier.

@shankari
Copy link
Contributor Author

shankari commented Oct 17, 2021

Looks like we can fix it either by downgrading gradle or upgrading android studio.
Since a major upgrade to gradle 7.1.1 was part of the cordova 10 upgrade, we will upgrade android studio.

UPDATE: Runs fine after updating

Screen Shot 2021-10-17 at 1 20 12 PM

.

@shankari
Copy link
Contributor Author

shankari commented Oct 17, 2021

Now, let's upgrade the external plugins.

cordova-plugin-advanced-http 3.0.0 "Advanced HTTP plugin"   -> 3.2.2
cordova-plugin-androidx-adapter 1.1.3 "cordova-plugin-androidx-adapter" -> unchanged
cordova-plugin-app-version 0.1.9 "AppVersion" -> 0.1.12 (deprecated, do we need?)
cordova-plugin-badge 0.8.8 "Badge"
cordova-plugin-customurlscheme 5.0.1 "Custom URL scheme" -> 5.0.2
cordova-plugin-device 2.0.1 "Device" -> 2.0.3

cordova-plugin-em-datacollection 1.6.0 "DataCollection"
cordova-plugin-em-jwt-auth 1.6.4 "JWTAuth"
cordova-plugin-em-server-communication 1.2.3 "ServerComm"
cordova-plugin-em-serversync 1.2.5 "ServerSync"
cordova-plugin-em-settings 1.2.2 "ConnectionSettings"
cordova-plugin-em-transition-notify 1.2.6 "TransitionNotification"
cordova-plugin-em-unifiedlogger 1.3.3 "UnifiedLogger"
cordova-plugin-em-usercache 1.1.3 "UserCache"


cordova-plugin-email-composer 0.9.2 "EmailComposer" -> unchanged (remove? now that we have upload functionality)
cordova-plugin-file 6.0.2 "File" -> unchanged (remove? I think we use this primarily for the email)
cordova-plugin-inappbrowser 4.0.0 "InAppBrowser" -> 5.0.0
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard" -> unchanged (do we even need this?)
cordova-plugin-ionic-webview 5.0.0 "cordova-plugin-ionic-webview" -> unchanged
cordova-plugin-ionic 5.4.7 "cordova-plugin-ionic" -> 5.5.1
cordova-plugin-local-notification 0.9.0-beta.3 "LocalNotification" -> unchanged (remove or migrate to the maintained fork?)
cordova-plugin-x-socialsharing 6.0.0 "SocialSharing" -> 6.0.3
cordova-support-google-services 1.3.2 "cordova-support-google-services"
es6-promise-plugin 4.2.2 "Promise"
phonegap-plugin-barcodescanner 8.1.0 "BarcodeScanner" -> see below
phonegap-plugin-multidex 1.0.0 "Multidex"
phonegap-plugin-push 2.3.0 "PushPlugin" -> see below

The two complicated upgrades are:

@shankari
Copy link
Contributor Author

Getting some errors with building pods

Failed to install 'cordova-plugin-em-jwt-auth': Error: pod: Command failed with exit code 31
    at ChildProcess.whenDone (/Users/kshankar/e-mission/e-mission-phone/node_modules/cordova-common/src/superspawn.js:136:25)
    at ChildProcess.emit (events.js:314:20)
    at maybeClose (internal/child_process.js:1051:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5)
Failed to restore plugin "cordova-plugin-em-jwt-auth". You might need to try adding it again. Error: Error: pod: Command failed with exit code 31

and

Failed to install 'cordova-plugin-em-datacollection': Error: pod: Command failed with exit code 31
    at ChildProcess.whenDone (/Users/kshankar/e-mission/e-mission-phone/node_modules/cordova-common/src/superspawn.js:136:25)
    at ChildProcess.emit (events.js:314:20)
    at maybeClose (internal/child_process.js:1051:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5)
Failed to restore plugin "cordova-plugin-em-datacollection". You might need to try adding it again. Error: Error: pod: Command failed with exit code 31

Before resetting everything, I got a similar error with the new @havesource/cordova-plugin-push plugin.
Let's try to investigate this further.

I am still getting the same error for that plugin.

$ npx cordova plugin rm @havesource/cordova-plugin-push
Uninstalling @havesource/cordova-plugin-push from android
Subproject Path: CordovaLib
Subproject Path: app
Uninstalling @havesource/cordova-plugin-push from ios
Running command: pod install --verbose
Removing "@havesource/cordova-plugin-push"
Removing @havesource/cordova-plugin-push from package.json
kshankar-35069s:e-mission-phone kshankar$ npx cordova plugin add @havesource/cordova-plugin-push
Installing "@havesource/cordova-plugin-push" for android
Subproject Path: CordovaLib
Subproject Path: app
Installing "@havesource/cordova-plugin-push" for ios
Running command: pod install --verbose
Failed to install '@havesource/cordova-plugin-push': Error: pod: Command failed with exit code 31
    at ChildProcess.whenDone (/Users/kshankar/e-mission/e-mission-phone/node_modules/cordova-common/src/superspawn.js:136:25)
    at ChildProcess.emit (events.js:314:20)
    at maybeClose (internal/child_process.js:1051:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:287:5)
pod: Command failed with exit code 31

@shankari
Copy link
Contributor Author

shankari commented Oct 18, 2021

updated the pod repo

$ pod repo update

per dpa99c/cordova-plugin-firebasex#43 (comment)
AND upgraded to latest version of cocoapods using the standard install command without a version

gem install --no-document --user-install cocoapods -v $COCOAPODS_VERSION

and then upgrading the version to the selected 1.11.2

works! but with this error

[!] The `emission [Debug]` target overrides the `LD_RUNPATH_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-emission/Pods-emission.debug.xcconfig'. This can lead to problems with the CocoaPods installation

@shankari
Copy link
Contributor Author

We are now down to 25 plugins, presumably

Found       25 plugins, expected 27
Found       25 plugins, expected 27, retrying

Presumably this is because

feat: remove cordova-support-google-services dependency #8
breaking(android): drop phonegap-plugin-multidex dependency #21

and those plugins have indeed been removed.

@shankari
Copy link
Contributor Author

shankari commented Oct 18, 2021

android build succeeds. iOS build fails with error

fatal error: 'AppAuth.h' file not found

Builds fine using xcode and launches in a 14.4 emulator.

@shankari
Copy link
Contributor Author

shankari commented Oct 18, 2021

At this point, I am going to test a bit and then push out the first version of the beta releases for testing. At least this will get the beta testing pipeline working. Then, as part of upgrading the cordova-jwt-auth plugin, I can determine what to do about AppAuth.

@shankari
Copy link
Contributor Author

shankari commented Oct 18, 2021

Upgraded gradle plugin, but then build on android studio failed with error

Could not find method compile() for arguments me.leolin:ShortcutBadger

Tried:

It seems to work now, need to see which one fixed it.
Also needed to change to JDK 11 (https://stackoverflow.com/a/69174666/4040267)
Needed to change also while compiling from the CLI

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home

With that fix, we were able to recompile after enabling cleartext traffic during debugging ONLY.
We can now launch the app and go through the onboarding on both android and iOS.

Screen Shot 2021-10-17 at 11 44 05 PM

I will plan on merging these changes to the CEO branch and starting beta testing tomorrow.
Still need to:

  • on android resolve what was needed for the "compile" error to go way
  • on iOS resolve the AppAuth issue

shankari added a commit to shankari/e-mission-phone that referenced this issue Oct 18, 2021
Includes all changes until:
e-mission/e-mission-docs#680 (comment)

These are primarily:
- bump up the version number
- bump up the SDK to API 30
- bump up android to 10.1.0
- bump up ios to 6.2.0
- bump up versions of all non-OpenPATH plugins required, including switching to
  new repo hosts if needed.

+ add barcode scanner
+ add badge plugin manully (to get the most recent version and support the new
android gradle plugin)

- bump up versions of gradle and cocoapods
- remove temporary workaround to uninstall tools 31 since we have upgraded to android 10
@shankari
Copy link
Contributor Author

@PatGendre @asiripanich @kafitz @jf87 anybody want to help test as I upgrade everything again?

@shankari
Copy link
Contributor Author

ios build failed CI (expected)
android build also failed CI (unexpected)

Cleared everything and reinstalled from scratch.
Now I'm getting the same android error.

/Users/kshankar/e-mission/e-mission-phone/platforms/android/app/src/main/java/com/adobe/phonegap/push/PushInstanceIDListenerService.java:6: error: cannot find symbol
import com.google.firebase.iid.InstanceIdResult;
...
/Users/kshankar/e-mission/e-mission-phone/platforms/android/app/src/main/java/com/adobe/phonegap/push/PushInstanceIDListenerService.java:17: error: cannot find symbol
    FirebaseInstanceId.getInstance().getInstanceId()
                                    ^
  symbol:   method getInstanceId()
  location: class FirebaseInstanceId

@asiripanich
Copy link
Member

@PatGendre @asiripanich @kafitz @jf87 anybody want to help test as I upgrade everything again?

happy to help. ;)

@shankari
Copy link
Contributor Author

Found the same issue in the push plugin repo, but the working version from the user is on cordova-android9
havesource/cordova-plugin-push#83 (comment)

The most obvious error is while trying to import
https://firebase.google.com/docs/reference/android/com/google/firebase/iid/InstanceIdResult
which is deprecated.

Trying to use the same FCM version as
havesource/cordova-plugin-push#83 (comment)

shankari added a commit to shankari/e-mission-phone that referenced this issue Oct 19, 2021
@shankari
Copy link
Contributor Author

shankari commented Oct 19, 2021

Archived and uploaded 1.2.0 (20) to itunes connect last night after some wrestling with the signing permissions.

Unfortunately, found a silly error while testing in the emulator - had to change the survey launch to match
e-mission/e-mission-phone@a3623e1

Fixed and uploaded 1.2.1 (21) to itunes. Sent invite to beta users.

@shankari
Copy link
Contributor Author

Android is a bit trickier because we need to change our upload process to support the aab bundles. It looks like apk is also available for older apps, so we could use that workaround for now, but what better time to make the inevitable change than during a formal upgrade process.

@shankari
Copy link
Contributor Author

Testing android on the emulator first (after being bitten by a weird bug on iOS). The survey stuff works fine, but we appear to have a persistent error with reading the location.

2021-10-19 10:46:34.871 2797-4233/gov.colorado.energyoffice.emission E/CreateGeofenceAction: Reading last location failed with error com.google.android.gms.common.api.ApiException: 17: API: LocationServices.API is not available on this device. while creating geofence

shankari added a commit to shankari/e-mission-data-collection that referenced this issue Feb 16, 2022
High level changes:
- create a new method in the foreground delegate
    - checks and returns appropriate plugin results
    - moved from `TripDiarySensorControlChecks`
- create a new interface for the async operation to read the activity results,
  which is the only way to generate the prompt
    - moved this from the `cordova-server-sync` repo
        e-mission/cordova-server-sync#50
- stored callback functions and invoked them asynchronously, similar to the
  location changes in ca979bd
- ensured that the simulator always returns TRUE to allow easy testing of other features
- changed the error messages to improve user instructions, including:
    - if motion activity is not supported on the device, uninstall
    - if the permission is off, fix in app settings
    - if the setting is off, fix and restart the app

Related testing:
e-mission/e-mission-docs#680 (comment)
e-mission/e-mission-docs#680 (comment)
@shankari
Copy link
Contributor Author

shankari commented Feb 19, 2022

After enabling notification permissions, we are almost done. Except for one really bizarre issue. On iOS13, when we open the app settings, the location permission is not visible. After a few hours spent debugging this, the situation is:

Screen Shot 2022-02-18 at 4 12 30 PM

So my current thoughts are:

  • I guess I tested e-mission/e-mission-data-collection@ca979bd on the physical phone, running 12.x and not on 15.x
  • there is something in the old app code which indicates that we need locations, similar to the activity sensor to indicate that the app is requesting a location. That code path is triggered in the old version and not the old version. We need to figure that out, add it and then we are really done.

Root cause: We need to actually start trying to read locations. If I comment out this one line
https://github.com/e-mission/e-mission-data-collection/blob/v1.6.0/src/ios/Location/GeofenceActions.m#L58
the option no longer shows up even on the older version. Note in the old version we called markConsented which initialized the code and generated the prompts. With the new version we first initialize everything and then call markConsented.

Solution: The solution is to start tracking before opening the app for the location case, and stopping tracking afterwards.

Testing done: After commenting out the line [_locMgr startUpdatingLocation]; from the old version and adding it to the new version, we end up with the permissions swapped. This is a clear indication that the startUpdatingLocation is needed before we can see the permission.
Screen Shot 2022-02-18 at 5 28 13 PM

@shankari
Copy link
Contributor Author

shankari commented Feb 19, 2022

One more super-duper final fix - when we add the plugin, the newly added files don't appear to be added to the project. We had to add them manually. Let's debug that briefly and then finish this merge.

ROOT CAUSE: we were labeling the source files as header-file. Fixed and everything compiles now.

shankari added a commit to shankari/e-mission-data-collection that referenced this issue Feb 19, 2022
… the app page

It turns out that we need to actually start tracking the location before the
location permission would be visible, similar to the motion activity
permission
(e-mission@f3c673a).

In the previous version, we would call `markConsented` and then popup
permissions as required. So the `startUpdatingLocation` call would happen in
parallel with opening up the status screen.

However, now we get all permissions upfront and then call `markConsented`. So
we need to include a dummy `startUpdatingLocation` call to see the location. We
can stop updating the location once the user has given the permission.

We didn't see this earlier (in ca979bd)
because we tested on a physical phone which was running 12.x and can prompt for
permissions inline.

For excrutiating detail, see
e-mission/e-mission-docs#680 (comment)
shankari added a commit to shankari/e-mission-phone that referenced this issue Feb 23, 2022
- Bump up overall app version
- Also bump up versions for the following plugins:
    - data collection: bulk of the changes, bump up a full minor version
    - server sync: move the fitness permission init code into the new permissions module
    - unified logger: add a new method to generate plugin compatible
      notifications so we can tell the user when their status is bad and automatically open the page to fix it.
    - usercache: includes code that calls the local notifications, so needed to
      change method signature to match the notification state.

This pretty much concludes e-mission/e-mission-docs#680
@shankari
Copy link
Contributor Author

@PatGendre @ericafenyo @lgharib I have just finished an initial version of the status screen. I will likely tweak it going forward, but wanted to get it out of the door for feedback.

I would encourage you to test it out, provide feedback and then update your versions of the apps. It is likely to make it easier to install correctly and to keep the app running correctly - e.g. solve the "iOS reset permissions" issue.

@ericafenyo this involves a significant expansion of the interface for the data collection library/plugin and a new UI screen. The new interface is fairly simple, mainly consisting of fixXXX and isValidXXX, but let me know if you have any questions.

@shankari
Copy link
Contributor Author

@asiripanich I just pushed the new iOS version to TestFlight in case you want to take a look. Open to feedback on other status metrics to include.

@shankari
Copy link
Contributor Author

shankari commented Feb 23, 2022

@asiripanich The status screen opens from the profile. You should also experiment with turning various permissions off and seeing what happens 😄

@ericafenyo
Copy link
Contributor

ericafenyo commented Feb 24, 2022

...this involves a significant expansion of the interface for the data collection library/plugin and a new UI screen. The new interface is fairly simple, mainly consisting of fixXXX and isValidXXX, but let me know if you have any questions.

Ok I will test and let you know when I have questions. Thanks.

@asiripanich
Copy link
Member

asiripanich commented Feb 28, 2022

@asiripanich I just pushed the new iOS version to TestFlight in case you want to take a look. Open to feedback on other status metrics to include.

I will do that and report back today. :)

@asiripanich
Copy link
Member

@shankari I like the new permission status screen. However, the scrolling issue is still there (we discussed it somewhere but I can't find the related issue).

@shankari
Copy link
Contributor Author

@asiripanich can you elaborate more on the scrolling issue? Some context may help me find the related issue.

@shankari
Copy link
Contributor Author

@asiripanich note also that the permission status screen is not only for onboarding. We also use it to track the status on an ongoing basis. If the user responds to the "XXX has been using your location in the background, do you want to continue?" with "no", then we will prompt the user that the app settings are incorrect, and open the app settings screen when they click on the notification so they can fix the issue easily.

I encourage you to experiment with turning location settings/permissions on/off, motion activity settings off, etc to see this behavior and whether it makes sense.

shankari added a commit to e-mission/e-mission-translate that referenced this issue Feb 28, 2022
shankari added a commit to e-mission/e-mission-translate that referenced this issue Feb 28, 2022
Changes are primarily related to the status screen changes:
e-mission/e-mission-docs#680

related UI string changes are at:
77df14c
@PatGendre
Copy link
Contributor

@PatGendre @ericafenyo @lgharib I have just finished an initial version of the status screen. I will likely tweak it going forward, but wanted to get it out of the door for feedback.

I would encourage you to test it out, provide feedback and then update your versions of the apps.

@shankari great ! Unfortunately we have updated our app 2 weeks ago and do not plan the next update until a few weeks ahead. But we will test the status screen again as soon as we can.

@asiripanich
Copy link
Member

asiripanich commented Mar 1, 2022

@asiripanich can you elaborate more on the scrolling issue? Some context may help me find the related issue.

I remember now that it was something I discussed with @atton16.

Expand to see a video

RPReplay_Final1646008458

@shankari
Copy link
Contributor Author

shankari commented Mar 1, 2022

@asiripanich Is this on android or iOS?

@asiripanich
Copy link
Member

asiripanich commented Mar 1, 2022

@asiripanich Is this on android or iOS?

This was on my iPhone 13 Pro with iOS 14.3.

@shankari
Copy link
Contributor Author

shankari commented Mar 1, 2022

Alas, I don't have access to an iOS 14.3. The oldest simulator in my xcode is 14.5, and my test phones are all 12.x
But in the iOS 14.5 simulator, I don't see the scrolling issue.
Do you see this in the simulator as well? If so, it is easier to debug...

Screen Shot 2022-03-01 at 9 42 30 AM

I'm actually not sure what the video is showing. Is it that you cannot access the "I accept" or that it takes a few tries to get there?

  • If it is the latter, I am not sure I want to prioritize it given my limited resources. I think it is more important to actually have more status elements in the status screen to help participants debug issues rather than deal with a somewhat clunky scroll.
  • If it is the former, I will have to address it, because otherwise users can't exit the status screen.

@asiripanich
Copy link
Member

asiripanich commented Mar 1, 2022

I haven't run it in the simulator yet.

I think it was the latter. However, I'm quite familiar with the app so I know that you need to scroll up and down a few times before it let you scroll to the end. Not sure if an average user would know how to resolve this.

@shankari
Copy link
Contributor Author

shankari commented Mar 2, 2022

Let me know if you can reproduce in the simulator.

It is primarily a question of prioritization - is getting the scrolling right more important than dealing with #704, or #698?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants