React Native プロジェクトには、Segment と CodePush の両方が統合されています。
セグメントは正常に動作します。
ただし、CodePush 更新プログラムがインストールされた直後にセグメントが機能しなくなるシナリオがあります。何もフラッシュされず、ライブ デバッガー リストに表示されるイベントはありません - ネイティブ レイヤーで追跡されるイベント (例: "Application Opened" および "Application Backgrounded" - これらのみが表示されます) を除きます。
したがって、RN でのセグメント呼び出し - Javascript レイヤーは、アプリが (CodePush によって) バンドルを再起動した後にのみ動作を停止すると想定しました。
ユーザーはアプリを閉じて強制終了し、アプリを再び正常に動作させる必要があります。
iOS と Android の両方で発生します (ストアからインストールした場合)。
そして奇妙なことに、デバッグまたはリリース ビルドを自分のマシンから Android フォンに直接実行すると、Android で問題を再現できません (動作します ♂️)。iOS シミュレーターについても同様です。
これに関するアイデアや回避策はありますか?
セットアップは次のようになります。
import React, { Component } from "react";
import CodePush from "react-native-code-push";
import segment from "@segment/analytics-react-native";
...
class App extends Component {
constructor(props) {
super(props);
this.setupSegment();
}
private setupSegment(): void {
segment.setup("<Segment Write Key>", {
debug: true,
trackAppLifecycleEvents: true,
ios: {
trackAdvertising: true
}
});
}
...
}
export default CodePush({
installMode: CodePush.InstallMode.IMMEDIATE,
checkFrequency: CodePush.CheckFrequency.ON_APP_RESUME,
updateDialog: null
})(App);
react-native: 0.61.5
react-native-code-push: 6.1.0
@segment/analytics-react-native: 1.1.1-beta.2 (also tried 1.1.1-beta.5)