0
내 앱에서 특정 화면을 여는 branch.io를 사용하여 딥 링크를 만들었습니까? 내 앱에서이 링크를 사용할 수 있고 사용자가 그것을 클릭하면 내 화면이 열리나요? 또는 앱에서 열려고 시도하는 링크가 동일한 앱을 가리키고 있기 때문에 아무 것도하지 않겠습니까?사용자가 앱 자체에서 딥 링크를 클릭하면 어떻게됩니까
내 앱에서 특정 화면을 여는 branch.io를 사용하여 딥 링크를 만들었습니까? 내 앱에서이 링크를 사용할 수 있고 사용자가 그것을 클릭하면 내 화면이 열리나요? 또는 앱에서 열려고 시도하는 링크가 동일한 앱을 가리키고 있기 때문에 아무 것도하지 않겠습니까?사용자가 앱 자체에서 딥 링크를 클릭하면 어떻게됩니까
응용 프로그램에서 WebView 내의 분기 링크를 클릭하면 분기 링크 매개 변수를 읽은 후 특정 활동에 대한 라우팅을 처리해야합니다.
다음은 webView가 포함 된 샘플 활동이며, 몇 가지 분기 링크를 보여줍니다. 당신은 웹보기에서 링크를 클릭하면 그것은 웹보기를 재개하고 적절한 활동에 경로에 기반 할 수있는 링크 파라미터를 읽어 일단 지점 링크가
public class MainActivity extends AppCompatActivity {
private WebView webView_;
private Button button_;
private String TAG = "WebViewController";
private Context context_;
private static final String URL_TO_LOAD = "https://evangelosg.github.io/index.html";
private static final String BRANCH_LINK_TO_LOAD = "https://ere6.app.link/b6sS0gsCfG";
@Override
protected void onNewIntent(Intent intent) {
Log.d("WebView", "onNewIntent");
setIntent(intent);
}
@Override
protected void onResume() {
super.onResume();
Branch branch = Branch.getInstance();
branch.initSession(new Branch.BranchReferralInitListener() {
@Override
public void onInitFinished(JSONObject referringParams, BranchError error) {
if (error == null) {
Log.d(TAG, referringParams.toString());
Toast.makeText(context_, referringParams.toString(), Toast.LENGTH_LONG).show();
if (referringParams.has(BundleExtraKeys.CLICKED_BRANCH_LINK)) {
try {
boolean clickedBranchLink = referringParams.getBoolean(BundleExtraKeys.CLICKED_BRANCH_LINK);
if (clickedBranchLink) {
//do stuff!
}
} catch (JSONException e) {
Log.d("BranchTrends", e.getMessage());
}
}
} else {
Log.i("MyApp", error.getMessage());
}
}
}, this.getIntent().getData(), this);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context_ = this;
setContentView(R.layout.activity_main);
webView_ = (WebView) findViewById(R.id.webView);
webView_.setWebViewClient(new BranchWebViewController("app.link", MainActivity.class));
webView_.loadUrl(URL_TO_LOAD);
button_ = (Button) findViewById(R.id.button);
button_.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.intent.putExtra("branch", BRANCH_LINK_TO_LOAD);
customTabsIntent.intent.putExtra("branch_force_new_session", true);
finish();
customTabsIntent.launchUrl(MainActivity.this, Uri.parse(BRANCH_LINK_TO_LOAD));
}
});
}
public class BranchWebViewController extends WebViewClient {
private String myDomain_;
private Class activityToLaunch_;
BranchWebViewController(@NonNull String myDomain, Class activityToLaunch) {
myDomain_ = myDomain;
activityToLaunch_ = activityToLaunch;
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if (url.contains(myDomain_)) {
Intent i = new Intent(view.getContext(), activityToLaunch_);
i.putExtra("branch", url);
i.putExtra("branch_force_new_session", true);
finish();
startActivity(i);
} else {
view.loadUrl(url);
}
return true;
}
}
}
를 클릭 할 경우 토스트 메시지의 링크 매개 변수를 표시합니다 링크 매개 변수