apptentive / apptentive-android

Apptentive Android SDK
http://www.apptentive.com
BSD 3-Clause "New" or "Revised" License
65 stars 64 forks source link

[INTERACTIONS] Criteria evaluated => false for non English Locale #226

Open marenovakovic opened 2 years ago

marenovakovic commented 2 years ago

Our app supports en and es locale. LoveDialog is shown when criteria set on the dashboard is met ONLY for en locale. For es locale [INTERACTIONS] Criteria evaluated => false is always false. I meet the criteria with es locale and nothing happens than I change to en locale and on first event LoveDialog shows and [INTERACTIONS] Criteria evaluated => true appears in log. Version: Apptentive Android SDK 5.6.0

CaseyApptentive commented 2 years ago

Hi @marenovakovic. Great question. We do support translations, so happy to look into this for you.

This may be related to a setting in your Apptentive Dashboard. Can you send me the Apptentive app ID that you're using to test? It can be found in the URL from your Apptentive Dashboard. In the example URL below, 5e8f7c640f4166143f000079 is the app ID

https://be.apptentive.com/apps/5e8f7c640f4166143f000079/dashboard

Separately, would you be able to turn on verbose logging for the Spanish test? We'd be able to see more details about exactly what is causing it to be evaluated false.

Thanks!

marenovakovic commented 2 years ago

@CaseyApptentive Thank you for quick response! We may have some internal problem and I will update the issue shortly.

marenovakovic commented 2 years ago

@CaseyApptentive No I don't think that we do have internal issue. We have simple criteria for testing love dialog, 3 launches and one other action. When criteria is met in Spanish Apptentive stops sending events all altogether until I change language to English and relaunch the app. I will post verbose logs here. Also when criteria is met in Spanish and I switch to English Spanish dialog is shown, there is no rule to this, it happens randomly.

CaseyApptentive commented 2 years ago

Thanks, @marenovakovic. I'll await those verbose logs. They will tell us exactly where the evaluation is failing.

Between tests, can you be sure to follow these steps to ensure it's a totally clean test? Sorry for the extra steps but it really does ensure that everything is working as expected.

Long tap app icon > App Info > Force Stop > OK > Storage & Cache > Clear Storage > OK > set your device to es > launch the app and proceed with testing

These instructions will ensure that any en interactions are downloaded in es, which is one important thing that we need to control for.

Thanks!

marenovakovic commented 2 years ago

@CaseyApptentive Am already running clean builds every time. After dialog shows for the first time I delete the app and install it again for new testing. I will post verbose logs.

marenovakovic commented 2 years ago

Sometimes dialog shows, sometimes it doesn't. But when it does show it's in a wrong language. What I've found out in logs:

  1. criteria is being evaluated correctly, in cases it shows.
  2. when it doesn't show however I see this:
    V/Apptentive: [pool-28-thread-2] [PAYLOADS] Unsent payloads count: 21
    D/Apptentive: [pool-28-thread-2] [PAYLOADS] Oldest unsent payload is missing a conversation id

    Does this tell you anything at all? @CaseyApptentive

marenovakovic commented 2 years ago
+ Parsing Interaction Criteria.
  + LogicalClause of type "$and"
  + LogicalClause of type "$and"
    + ConditionalClause for query: "code_point/local#app#launch_app/invokes/version_code"
Saving payload body to: path.data

{"event":{"nonce":"**xxx**","client_created_at":1.627579489317E9,"client_created_at_utc_offset":7200,"label":"**xxx**"},"session_id":"**xxx**"}
      + ConditionalTest: $gte: BigDecimal(3)
  + LogicalClause of type "$and"
  + LogicalClause of type "$or"
  + LogicalClause of type "$and"
    + ConditionalClause for query: "interactions/xxx/last_invoked_at/total"
      + ConditionalTest: $before: BigDecimal(-604800)
  + LogicalClause of type "$and"
    + ConditionalClause for query: "interactions/xxx/invokes/total"
      + ConditionalTest: $eq: BigDecimal(0)
    + ConditionalClause for query: "code_point/com.apptentive#app#launch/invokes/version_name"
      + ConditionalTest: $gte: BigDecimal(1)
    + ConditionalClause for query: "interactions/xxx/invokes/version_name"
      + ConditionalTest: $eq: BigDecimal(0)
+ Finished parsing Interaction Criteria.
Criteria evaluated => false
Criteria evaluation details:
- $and:
  - $and:
    - number of invokes for event 'local#app#launch_app' for version code '1339' ('2') is greater than or equal to '3' => false

This is after 5 launches and 3 actions that are supposed to trigger love dialog.

After one more launch and action that should trigger Love Dialog I get this: - number of invokes for interaction 'xxx' for version name '3.8.0' ('0') greater than '0' => false

One more launch and Love Dialog triggering action and dialog shows in English and logs are:

- $and:
  - $and:
    - number of invokes for event 'local#app#launch_app' for version code '1339' ('3') is greater than or equal to '3' => true
    - $or:
      - last time interaction 'x' was invoked ('null') before date '1.626975635597E9' => false
      - number of invokes for interaction 'x' ('0') equal to '0' => true
  - number of invokes for event 'com.apptentive#app#launch' for version name '3.8.0' ('7') is greater than or equal to '1' => true
  - number of invokes for interaction 'x' for version name '3.8.0' ('0') equal to '0' => true
CaseyApptentive commented 2 years ago

Thank you. This is very helpful. Like you said, I believe you are actually seeing two separate issues -- so let's work through one at a time. The good news is that neither is that crazy!

Would you be open to scheduling a dev call to work through these? It could be easier to resolve on the phone.

If so, please reach out to support@apptentive.com and we'll get one scheduled as soon as possible. Don't worry. Our support email has real people responding throughout the day (Pacific Time) and we'll expedite this!