corona-warn-app / cwa-app-ios

Native iOS app using the exposure notification framework from Apple. The CWA development ends on May 31, 2023. You still can warn other users until April 30, 2023. More information:
https://coronawarn.app/en/faq/#ramp_down
Apache License 2.0
1.68k stars 285 forks source link

ENF shared two possible Encounters, but only one is shown in iOS App #1011

Closed svenkubiak closed 4 years ago

svenkubiak commented 4 years ago

Avoid duplicates

Describe the bug

On 03.08.2020 the iOS App started to show me 1 possible risk encounter (low).

Today, I received a notification from ENF that 2 possible encounters have been shared with the App, but the App still shows 1 Encounter. I am checke the App every 24 hours for manual update, so I would not have missed a second possible encounter.

I double checked all "Begenungsüberprüfungen" protocols and I can only find 1 possible Encounter as it is shown in the App.

Any idea what happend to the second encounter and why is it not shown in the iOS App?

Expected behaviour

Number of possible encounters from Notifications from ENF and in iOS App match.

Steps to reproduce the issue

IMG_7307 IMG_7308

Technical details

Possible Fix

-

Additional context

-

Ein-Tim commented 4 years ago

This should be related to this point in the FAQ. You had contact to two people who where tested positive for COVID-19, but with only one of the two you had contact for longer then 10 minutes or/and you were closer than 8 meters.

Ein-Tim commented 4 years ago

I double checked all "Begenungsüberprüfungen" protocols and I can only find 1 possible Encounter as it is shown in the App.

Do you mean you went to Settings and checked it there (Privacy->Health...)?

daimpi commented 4 years ago

You had contact to two people who where tested positive for COVID-19, but with only one of the two you had contact for longer then 10 minutes or/and you were closer than 8 meters.

@Ein-Tim No: if he had contact with one of them for more than 10 min & closer than 8 m, the app would not show a "green/low" risk status, but rather a red one, so both encounters (if there were actually two) must have been low risk

The weird thing is that iOS thinks that it had 2 encounters, while CWA only shows one.

svenkubiak commented 4 years ago

I double checked all "Begenungsüberprüfungen" protocols and I can only find 1 possible Encounter as it is shown in the App.

Do you mean you went to Settings and checked it there (Privacy->Health...)?

Yes. Did an export as well.

Ein-Tim commented 4 years ago

@Ein-Tim No: if he had contact with one of them for more than 10 min & closer than 8 m, the app would not show a "green/low" risk status, but rather a red one, so both encounters (if there were actually two) must have been low risk

You're absolutely right, my fault.

The weird thing is that iOS thinks that it had 2 encounters, while CWA only shows one.

Yes, that has to be investigated.

Ein-Tim commented 4 years ago

@daimpi If @svenkubiak checked all protocols in the settings and found only one Encounter, the App shows the right number of possible Encounters, or not?

And that Apples Push Notification showed 2 Encounters is an issue/bug from iOS and not from CWA...

Correct me if I'm wrong

Tho-Mat commented 4 years ago

Other Possible reasons: Two contacts to the same key One contact is more than 14 days old now Bug in Protocol

Ein-Tim commented 4 years ago

One contact is more than 14 days old now

I also thought about that before, but the Push Notification says "Wöchentliches Update" so my understanding is that both (if there were 2) contacts, happened in the last 7 days.

svenkubiak commented 4 years ago

For reference, this is the protocol export matching one encounter (starting 03.08.) which results as one low risk encounter in the app. ExposureChecks-2020-08-05.json.zip

If @svenkubiak checked all protocols in the settings and found only one Encounter, the App shows the right number of possible Encounters, or not?

Protocol and App match. Yes.

Tho-Mat commented 4 years ago

The message does not say the contacts happen in the last 7 days. It says it founds 2 contacts in the last 7 days. That is something different. If a infected user publishes his keys, he publishes 1 to 13 keys (yesterday to 14 days ago).
So if 2 contacts were found in the last 7 days it could be they happened 20 days ago.

thomasaugsten commented 4 years ago

I assume the weekly report sums up every MatchCount in the ExposureChecks JSON of the last 7 days until the weekly report is created. Because this is the sum of matches the API response to the App requests. The API cannot say which matchcounts are the same maybe this is the reason why they sum up every MatchCount. But there is no official documentation from Apple side. This means the MatchCount in the JSON and in the App are the same.

svenkubiak commented 4 years ago

I assume the weekly report sums up every MatchCount in the ExposureChecks JSON of the last 7 days until the weekly report is created.

Then the iOS notification should have said 3 and not 2, because at the time I received the push notification the sum of every MatchCount was 3.

Tho-Mat commented 4 years ago

Due to a bug in the protocol you only have the last 100 checks. For full Protocol you should have ~14*14=196 entries. So there may be missing some days entries. Hopefully the app gets its values from ios and not from the protocol. That has to be checked.

Tho-Mat commented 4 years ago

@svenkubiak No. 3 times the same hash file value. So only one contact

thomasaugsten commented 4 years ago

@svenkubiak The questions is when the weekly reports exactly appears or calculated on 04.08 or 05.08. I saw other JSON where it exactly fits thats why I was developing the theory. Unfortunately there is not hint in the apple source code regarding this weekly report.

svenkubiak commented 4 years ago

@thomasaugsten Notification was displayed at 05.08. around 19:45 if that helps.

thomasaugsten commented 4 years ago

@svenkubiak I think they sum the matchCounts for the weekly report then from 04.08.20 23:59:59 - 7 days And this results in a sum of 2.

svenkubiak commented 4 years ago

@thomasaugsten Very confusing, but yes, that sounds like a likely reason.

Tho-Mat commented 4 years ago

@svenkubiak So next week you must get at least a 7 contacts. The date with the match is the file 2020-08-02. You received that 2020-08-03. The file was checked at 03,04 =>2 The file will be checked every day. So if the theory is true next week it should say 7

Tho-Mat commented 4 years ago

There may be other users that can confirm that

svenkubiak commented 4 years ago

@svenkubiak So next week you must get at least a 7 contacts. The date with the match is the file 2020-08-02. You received that 2020-08-03. The file was checked at 03,04 =>2 The file will be checked every day. So if the theory is true next week it should say 7

Yes. Current assumption. Let's see. Thanks all 👍

Tho-Mat commented 4 years ago

To quickly: it could be the key is older, so no match tomorrow or....

Tho-Mat commented 4 years ago

@svenkubiak Please export the protocol daily It may help

ghost commented 4 years ago

Hello @svenkubiak,

since the app works correctly, added the label "on hold" to your issue-report. Please try to keep watching it so that we know what the next weekly report of Apple is displaying.

Thanks, LMM

Corona-Warn-App Open Source Team

haosap commented 4 years ago

Hi @svenkubiak, This is a known issue, but we also double checked your exposure log file. There is only one exposure entry found.

      {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 1,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 09:58:58 +0200"
    },

iOS takes also duplicate key into account. cc @thomasaugsten

Tho-Mat commented 4 years ago

@haosap But this expose entry :hash + matchcount=1 appears 3 times in svenkubiak ‘s log You easily will find the other 2: { "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD", "RandomIDCount" : 1385, "MatchCount" : 1, "DataSource" : "de.rki.coronawarnapp", "Timestamp" : "2020-08-04 09:05:17 +0200" }, 0200" }, { "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD", "RandomIDCount" : 1385, "MatchCount" : 1, "DataSource" : "de.rki.coronawarnapp", "Timestamp" : "2020-08-03 07:39:53 +0200" },

Tho-Mat commented 4 years ago

@GPclips “ since the app works correctly, ” Can you surely say this at the moment?

ghost commented 4 years ago

Hi @Tho-Mat,

thanks for asking your question. With the Corona-Warn App, we call the Exposure Notification API from Apple, if using the iOS app. The application shows the exact results we receive from that service and therefore the displayed result is correct. The app works fine. This looks like a bug in the weekly report of apple and therefore we have added the Apple label to this thread. We are in contact with Apple to inform them about this issue.

Thanks, LMM

Corona-Warn-App Open Source Team

svenkubiak commented 4 years ago

Short update while I am storing daily protocols and waiting for the next ENF Notification from iOS.

The iOS Corona Warn App went back to 0 (low) Encounters today, after showing 1 (low) Encounter for 5 days.

Image

What looks odd to me is that based on the Protocol the same key set resulted in 1 Encounter yesterday, while it resulted in 0 Encounter today.

Image Image

I would have expecteded that this happends after 14 days when the key set is not in Today-14.

Can someone explain that?

thomasaugsten commented 4 years ago

A first guess without looking deep into it this is because the collected RPIs are deleted by Apple after 14days from your device which are used to match with the key files.

svenkubiak commented 4 years ago

@thomasaugsten

Makes sense. Thanks.

daimpi commented 4 years ago

Only somewhat related: If you swipe away the iOS Notifications, can you later on still retrieve them? Is there a log and if so, where can you find it?

I'm asking for someone on Twitter for whom the iOS notification seemingly showed 6 encounters, while the App itself remained at 0: https://twitter.com/plushy_cat/status/1292428044045635584

Ein-Tim commented 4 years ago

Only somewhat related: If you swipe away the iOS Notifications, can you later on still retrieve them? Is there a log and if so, where can you find it?

No, to the best of my knowledge it isn't possible to retrieve the Notification after you either

svenkubiak commented 4 years ago

@daimpi Yub, was looking foe that myself. Didn‘t found a way to get the notification back nor found a „log“ of it.

thomasaugsten commented 4 years ago

@daimpi No you cannot. Then she had very likely 1 low risk exposure the last 6 days. Now this risk exposure is to old that why it is not visible in the app anymore. Nothing to be concerned

daimpi commented 4 years ago

Thanks for all the feedback :)

Ok, just to make sure I got the scenario right: so basically she would have had a risk encounter 14 days ago, who uploaded their keys 7 days ago. Then for the last 6 days CWA would have shown one low risk encounter each day, which would be reset to 0 today. Apple just adds those up and then shows "6 encounters". Did I miss anything?

I also told her that she has nothing to worry about, but I'll ask her whether she checked her CWA in the last few days :)

svenkubiak commented 4 years ago

@daimpi That Apple is summing up is the current assumptiom (afaik), but yes, looks like the scenario.

daimpi commented 4 years ago

Ok, I got feedback from the user: she said she checked CWA every day and always had 0 risk-encounters: https://twitter.com/plushy_cat/status/1292444970213879809

So I've no clue what's going on, despite Apple having a messed up ENF notification system 🤷

thomasaugsten commented 4 years ago

Then the exported Json from Begegnungsüberprüfungen exportieren in Begegnungsüberprüfungen would Be helpful if there was really 0 matchcount

daimpi commented 4 years ago

I'll ask her, or if you want you could also chime in directly on twitter :)

As I'm not an iOS user: what are the steps to do such an export?

Ein-Tim commented 4 years ago

As I'm not an iOS user: what are the steps to do such an export?

(In German): Einstellungen->Datenschutz->Health-> COVID-19-Begegnungsaufzeichnungen-> Begegnungsüberprüfungen-> [ganz nach unten Scrollen]-> Begegnungsüberprüfungen exportieren

Dann sollte das "Teilen"-Menü auftauchen und eine App zum Teilen der Datei kann ausgewählt werden.

daimpi commented 4 years ago

Ok, she send me her Exposure log: ExposureChecks-2020-08-09.zip

(The Android logs I'm used to have a different format, if anyone has a quick pointer on how to import the iOS ones into Excel lemme know 🙂 )

thomasaugsten commented 4 years ago

The json logs match what the user said there was no risk exposure in the app. Maybe the user misread the 0 in the weekly report for a 6. But we a working on this to understand the weekly report better.

FelixKuehl commented 4 years ago

As @Tho-Mat requested requested in https://github.com/corona-warn-app/cwa-wishlist/issues/148#issuecomment-670852978, here is my exposure log. I get a green "low risk" view, but with "1 exposure". I did not get a notification at all. Also, i have not received a weekly report (yet).

Screenshot: image

Exposure Checks exported from IOS:

{
  "Build" : "17F80",
  "ExportVersion" : 1,
  "ExposureChecks" : [
    {
      "Hash" : "29D6D1D12B665615AAB90FCAAE7381A7BEC5C94B486C4C1DB2B58187709D9F73",
      "RandomIDCount" : 740,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "D06F689AFB6B040F5022CA22CB468AE4D0E3A1CA96F1638271270C85BBB52448",
      "RandomIDCount" : 825,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-02 16:53:44 +0200"
    },
    {
      "Hash" : "4CDEABF45B7CB9B55EA8CA8C0AE7197DEFBD71DCCA517B590D1FAACD537449C2",
      "RandomIDCount" : 835,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "895F811A97D2312D73BBD145E33AF01202A2B10AC9DCD7173952D16CAC50E748",
      "RandomIDCount" : 720,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "E5448879D9BE533290587D1177E3A2E64DF06C7CD785B17E5D8FE3769DBE0B0B",
      "RandomIDCount" : 1375,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "C6A03D8F5C9489D5A8E3D07ECB333EBB3E753759B81887787BD1EB8C8193FB25",
      "RandomIDCount" : 1140,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "29D6D1D12B665615AAB90FCAAE7381A7BEC5C94B486C4C1DB2B58187709D9F73",
      "RandomIDCount" : 740,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "D06F689AFB6B040F5022CA22CB468AE4D0E3A1CA96F1638271270C85BBB52448",
      "RandomIDCount" : 825,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-03 17:06:37 +0200"
    },
    {
      "Hash" : "895F811A97D2312D73BBD145E33AF01202A2B10AC9DCD7173952D16CAC50E748",
      "RandomIDCount" : 720,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "E5448879D9BE533290587D1177E3A2E64DF06C7CD785B17E5D8FE3769DBE0B0B",
      "RandomIDCount" : 1375,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "C6A03D8F5C9489D5A8E3D07ECB333EBB3E753759B81887787BD1EB8C8193FB25",
      "RandomIDCount" : 1140,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "29D6D1D12B665615AAB90FCAAE7381A7BEC5C94B486C4C1DB2B58187709D9F73",
      "RandomIDCount" : 740,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "D06F689AFB6B040F5022CA22CB468AE4D0E3A1CA96F1638271270C85BBB52448",
      "RandomIDCount" : 825,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "833616C7F071A6588C27CAB55A817F5FFF827A432FE9515D9F92CC7468241371",
      "RandomIDCount" : 1645,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-04 18:54:49 +0200"
    },
    {
      "Hash" : "4E5E2F85A920709C5D61B85EB0056B6E2E18482EE8F242349025247409DC02E5",
      "RandomIDCount" : 170,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "E5448879D9BE533290587D1177E3A2E64DF06C7CD785B17E5D8FE3769DBE0B0B",
      "RandomIDCount" : 1375,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "C6A03D8F5C9489D5A8E3D07ECB333EBB3E753759B81887787BD1EB8C8193FB25",
      "RandomIDCount" : 1140,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "29D6D1D12B665615AAB90FCAAE7381A7BEC5C94B486C4C1DB2B58187709D9F73",
      "RandomIDCount" : 740,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "D06F689AFB6B040F5022CA22CB468AE4D0E3A1CA96F1638271270C85BBB52448",
      "RandomIDCount" : 825,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "833616C7F071A6588C27CAB55A817F5FFF827A432FE9515D9F92CC7468241371",
      "RandomIDCount" : 1645,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "FC11A5902E8AF6B0D553FA3EFE177FE58F274C8B9C2F8CD8599CE731D3D94033",
      "RandomIDCount" : 2813,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-05 19:26:19 +0200"
    },
    {
      "Hash" : "C6A03D8F5C9489D5A8E3D07ECB333EBB3E753759B81887787BD1EB8C8193FB25",
      "RandomIDCount" : 1140,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "29D6D1D12B665615AAB90FCAAE7381A7BEC5C94B486C4C1DB2B58187709D9F73",
      "RandomIDCount" : 740,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "D06F689AFB6B040F5022CA22CB468AE4D0E3A1CA96F1638271270C85BBB52448",
      "RandomIDCount" : 825,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "833616C7F071A6588C27CAB55A817F5FFF827A432FE9515D9F92CC7468241371",
      "RandomIDCount" : 1645,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "FC11A5902E8AF6B0D553FA3EFE177FE58F274C8B9C2F8CD8599CE731D3D94033",
      "RandomIDCount" : 2813,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "8C9B1750B841C0438F59DE8A24A757C607293E143513895B2DEBEB2365F5FFC0",
      "RandomIDCount" : 2415,
      "MatchCount" : 1,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-06 20:21:37 +0200"
    },
    {
      "Hash" : "29D6D1D12B665615AAB90FCAAE7381A7BEC5C94B486C4C1DB2B58187709D9F73",
      "RandomIDCount" : 740,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "D06F689AFB6B040F5022CA22CB468AE4D0E3A1CA96F1638271270C85BBB52448",
      "RandomIDCount" : 825,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "833616C7F071A6588C27CAB55A817F5FFF827A432FE9515D9F92CC7468241371",
      "RandomIDCount" : 1645,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "FC11A5902E8AF6B0D553FA3EFE177FE58F274C8B9C2F8CD8599CE731D3D94033",
      "RandomIDCount" : 2813,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "8C9B1750B841C0438F59DE8A24A757C607293E143513895B2DEBEB2365F5FFC0",
      "RandomIDCount" : 2415,
      "MatchCount" : 1,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "D34545397E3CCEAA63241BE346D55D83AB3F5C8B841464A7701138B3E033B756",
      "RandomIDCount" : 3050,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-07 20:25:08 +0200"
    },
    {
      "Hash" : "D06F689AFB6B040F5022CA22CB468AE4D0E3A1CA96F1638271270C85BBB52448",
      "RandomIDCount" : 825,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "833616C7F071A6588C27CAB55A817F5FFF827A432FE9515D9F92CC7468241371",
      "RandomIDCount" : 1645,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "FC11A5902E8AF6B0D553FA3EFE177FE58F274C8B9C2F8CD8599CE731D3D94033",
      "RandomIDCount" : 2813,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "8C9B1750B841C0438F59DE8A24A757C607293E143513895B2DEBEB2365F5FFC0",
      "RandomIDCount" : 2415,
      "MatchCount" : 1,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "D34545397E3CCEAA63241BE346D55D83AB3F5C8B841464A7701138B3E033B756",
      "RandomIDCount" : 3050,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "66A963F473CA62E4AE272C1592B2C45F7ADEF47A1B9FE82CD77DB5988788AA23",
      "RandomIDCount" : 2210,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-08 20:27:09 +0200"
    },
    {
      "Hash" : "681D0BB41E33C3659E6528ABE9736371800569FEAD906B68FB86175CFBDEA65F",
      "RandomIDCount" : 595,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "75432F9AC4F9795D55C0CFE8792372BB8C439A81B36E2C67592ED3E84941B842",
      "RandomIDCount" : 1790,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "742B557CC3340276581CDA249BF32974DA216A73608A93C7CA71AF6780DEDBB1",
      "RandomIDCount" : 2290,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "F090F7EB8B51D96064C8D04267B0F4DD251884BA88E2F602758A3713C597BA36",
      "RandomIDCount" : 2520,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "21C9FF4B16973C0C9D48A8DB37D728014F41827FE745511E01FAE683589CDFFE",
      "RandomIDCount" : 1575,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "56AF64D46D311333B8CEE0430A0B7EF87CA04FC4369AA719674F7BDBFE8C30AA",
      "RandomIDCount" : 1405,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "A7397D370364D7161218210E99EEAC01036894CEE5552C5D92BE644C33D3A0DD",
      "RandomIDCount" : 1385,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "833616C7F071A6588C27CAB55A817F5FFF827A432FE9515D9F92CC7468241371",
      "RandomIDCount" : 1645,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "FC11A5902E8AF6B0D553FA3EFE177FE58F274C8B9C2F8CD8599CE731D3D94033",
      "RandomIDCount" : 2813,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "8C9B1750B841C0438F59DE8A24A757C607293E143513895B2DEBEB2365F5FFC0",
      "RandomIDCount" : 2415,
      "MatchCount" : 1,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "D34545397E3CCEAA63241BE346D55D83AB3F5C8B841464A7701138B3E033B756",
      "RandomIDCount" : 3050,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "66A963F473CA62E4AE272C1592B2C45F7ADEF47A1B9FE82CD77DB5988788AA23",
      "RandomIDCount" : 2210,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    },
    {
      "Hash" : "26C8E16D66F0FC1679BCF9A97183337AFD854CD72BF4938EC43B2DF4CEAEE5F2",
      "RandomIDCount" : 1655,
      "MatchCount" : 0,
      "DataSource" : "de.rki.coronawarnapp",
      "Timestamp" : "2020-08-09 21:39:35 +0200"
    }
  ],
  "DeviceProductType" : "iPhone12,5"
}

I noticed, that the Check with the "MatchCount": 1 and "RandomIDCount" : 2415 repeats daily (When loading the lates checks), but moves down in the array. Am I assuming correctly, that the array is ordered and each entry corresponds to the collected IDs for a certain day? I also want to point out, that the entry with a match was logged as the first position of the array at the day, where it first occurred. Does that mean, that the encouter with the COVID-19 positive person happened at the same day, where this person entered his positive test result? Seems relatively unlikely to me, doesn't it?

daimpi commented 4 years ago

@FelixKuehl The fact that the match occurred with the entry with "RandomIDCount" : 2415 can only be used to check when the package containing the key you matched with was first created on the server. If we compare that number with the "Distributed diagnosis keys per day" from here we find that the package containing the key you matched with was the one created by the server for the 05.08.2020. This means the person you had contact with uploaded their keys on that day, and you can download them the following day (06.08.20). This also matches with your log, as the first time a match appears is timestamped "2020-08-06 20:21:37 +0200".

As they always upload their keys from the last 14 days, you might have had contact with this person on any of the 14 days prior to 05.08.20 (although it can't be too far back, otherwise the 1 Risk-encounter in CWA would already have disappeared, which happens as soon as the encounter is more than 14 days in the past from now).

FelixKuehl commented 4 years ago

Thanks for the clarification @daimpi . Meeting someone the same day, they upload their key seemed really unlikely to me. This makes a lot more sense now. The date, when the contact happened could then only be calculated by monitoring, when the message disappears given the 14 day limit, correct?

daimpi commented 4 years ago

The date, when the contact happened could then only be calculated by monitoring, when the message disappears given the 14 day limit, correct?

Yes, that's unfortunately the only way I would currently know how to do this with a "low/green" risk encounter. Improvement is being worked on though:

svenkubiak commented 4 years ago

In follow up of my original issue, this is how the iOS ENF Notification looked today

IMG_7328

IMHO, this does not confirm the sum-of-matchcount theory, as iOS ENF Notification would have expected to show > 0.

I saved the daily protocol log (after daily app update), which can be found here:

ExposureLogs.zip

The "2" Exposures mentioned in my original issue remain a mystery to me 😢

yanniks commented 4 years ago

My "weekly iOS update" reports three exposures while the CWA app only shows one exposure. I usually open the app on a daily basis and I've never seen the counter going up to two or three. I think that wouldn't be the expected behavior either, correct? Screenshot 2020-08-12 at 20 20 51 copy IMG_7CFC67667258-1

ExposureChecks-2020-08-12.json.zip

FelixKuehl commented 4 years ago

@yanniks Your exposure log only shows a "MatchCount" : 1 for the hash "FC11A5902E8AF6B0D553FA3EFE177FE58F274C8B9C2F8CD8599CE731D3D94033" and nothing else. So just from seeing this, the CWA seems to display everything correctly (1 exposure). Also it does not seem to add up the match counts, because the entry occurs 8 times in your log. Maybe this is just a bug from Apples side with the IOS weekly notification?