我的解決辦法是:
- 如果第一次發射,等待在飛濺活動的參數
- 如果不是第一個推出,傳給這將傳遞參數的應用程序的分公司參數到任何聽衆進行處理。如果沒有偵聽器,那麼它可以嘗試在Splash Activity中處理它,或者保存它以備後用。
我不確定這是否是好的做法,但我認爲這會比添加事件總線庫更簡單。很高興聽到一些反饋。
的應用類:
public class MyApp extends Application {
private Listener branchListener = null;
public interface Listener {
void onBranchLinkReceived(JSONObject params, BranchError error);
}
public void registerBranchListener(Listener listener) {
branchListener = listener;
}
public void unregisterBranchListener() {
branchListener = null;
}
public boolean branchLinkReceived(JSONObject params, BranchError error) {
if (branchListener != null) {
branchListener.onBranchLinkReceived(params, error);
return true;
}
return false;
}
@Override
public void onCreate() {
Branch.getAutoInstance(this);
...
}
}
在初始的活動:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Branch branch = Branch.getInstance();
branch.initSession(new Branch.BranchReferralInitListener(){
@Override
public void onInitFinished(JSONObject params, BranchError error) {
if (error == null) {
if (firstLaunch) {
processParamsInSplashActivity(params);
} else {
boolean isProcessed = ((MyApp) getApplication()).branchLinkReceived(params, error);
}
}
}, this.getIntent().getData(), this);
}
}
}
而且在MainActivity:
public class MainActivity extends AppCompatActivity implements MyApp.Listener {
@Override
protected void onCreate(Bundle savedInstanceState) {
((MyApp) getApplication()).registerBranchListener(this);
...
}
@Override
protected void onDestroy() {
((MyApp) getApplication()).unregisterBranchListener();
super.onDestroy();
}
@Override
public void onBranchLinkReceived(JSONObject params, BranchError error) {
Log.d("MainActivity", "Branch link received: " + params);
}
}
這不是在第一次安裝。這是我安裝後隨時打開應用程序的任何時候。我的'SplashActivity'將完成它的任務,並在分支監聽器返回之前開始打開'MainActivity'。 – duane
@duane您是否根據鏈接參數更改主活動中的內容/視圖?如果沒有,您可以隨時在主要活動中初始化分支。回調完成後會有一些網絡延遲。您可以通過初始化主活動中的分支來避免Splash Activity中的滯後現象。確保適當更新您的Manifest以定義主要活動中的意圖。 –
我做了一些測試,我會安裝,測試第一次啓動的時間,退出並重新打開第二次啓動應用程序。 – duane