Данные ветвления ввода-вывода, не связанные с ветвлением, никогда не очищаются или не сбрасываются onResume () или onReady () - PullRequest
0 голосов
/ 25 апреля 2018

Данные моего филиала не "сбрасываются" после того, как я прочитал их в обратном вызове initSession ().Поэтому, если я условно перенаправляю пользователя в зависимости от того, содержит ли Branch параметр url, который я ожидаю получить, пользователь всегда будет перенаправлен, потому что данные ссылки всегда существуют точно так же, как если бы я только что нажал на ссылку.Это происходит до тех пор, пока я не убью приложение вручную.Вот мой код:

В Android создаем простую ссылку без ответвления:

 String uri = "myApp://?userId=100";
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse(uri));
            getActivity().startActivity(intent);

В Ionic, захват данных ссылки и перенаправление на DetailPage:

 this.platform.ready().then(() => {
handleBranch();
});

this.platform.resume.subscribe(() => {
      this.handleBranch();
    });

  private handleBranch() {
    const Branch = window['Branch'];
    Branch.initSession(data => {
      if (data['+non_branch_link']) {
        let urlStr = data['+non_branch_link'];
        const url = new URL(urlStr);
        this.nav.push(DetailPage, {userId: url.searchParams.get('userId')});
      }
    });
  }

Я получаю следующие данные из Branch:

{"+ non_branch_link": "myApp: //? UserId = 1950", "+ clicked_branch_link": false, "+ is_first_session": false}

Но если я выхожу из приложения и возвращаюсь, я получаю одни и те же данные снова и снова.

{"+ non_branch_link": "myApp: //? userId = 1950 "," + clicked_branch_link ": false," + is_first_session ": false}

Вот моя общая информация о версии:

"branch-cordova-sdk": "^2.6.24",

li packages: (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0
global packages:

cordova (Cordova CLI) : 8.0.0 
local packages:

@ionic/app-scripts : 3.1.8
Cordova Platforms  : android 6.2.3 ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2
System:

Android SDK Tools : 26.1.1
ios-deploy        : 1.9.2 
ios-sim           : 6.1.2 
Node              : v8.11.1
npm               : 5.6.0 
OS                : macOS Sierra
Xcode             : Xcode 9.2 Build version 9C40b 
Environment Variables:

ANDROID_HOME : /Users/j/Library/Android/sdk

Параответы на комментарии Аарона:

  • Эти вызовы платформы находятся в app.component.ts.

  • Я печатаю данные в обратном вызове init.

  • Данные ссылки никогда не удаляются, пока я не проведу пальцем по приложению и не перезапущу.Он последовательно вызывается при переходе от приложения и обратно в приложение.
  • Оба метода getLatestReferringParams () и getFirstReferringParams () не возвращают никаких данных с моей ссылкой, не связанной с веткой.
  • Ссылки на филиалы (я создал быструю ссылку) ведут себя как положено.Обратный вызов данных вызывается один раз, когда я нажимаю на ссылку, и приложение открывается, и больше не вызывается при последующем возобновлении.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...