Firebase 동적 링크 지원 사용자 지정 매개 변수?
저는 오픈 소스 컨퍼런스를 위한 앱을 작성하고 있습니다.
원래 각 참석자는 이메일이나 SMS를 통해 서로 다른 링크를 받습니다.
https://example.com/ ?http=httpfc8bfa07643a1ca8015cbe74f5f17
그런 다음 이 링크를 사용하여 앱을 열면 토큰으로 사용자가 어떤 참석자인지 알 수 있습니다.
Firebase는 I/O 2016에서 새로운 기능인 Dynamic Links를 출시하여 사용자에게 더 나은 경험을 제공합니다.
시도해봤지만 동적 링크에서 사용자 지정 매개 변수(토큰)를 전달할 방법을 찾을 수 없습니다. 사용자에게 매개 변수가 다른 동일한 링크를 사용하려면 어떻게 해야 합니까?
감사해요.
짧은 URL은 사용할 수 없을 것 같습니다.https://<my app>.app.goo.gl/Gk3m
각 사용자에 대해 하나씩 생성하지만 긴 URL을 사용할 수는 없습니다.https://<my app>.app.goo.gl/?link=https://example.com/?token=fccfc8bfa07643a1ca8015cbe74f5f17 ...(add other parameters as needed)
각 사용자에 대해 새 토큰을 설정합니다.
토큰은 자동으로 생성됩니다.이 경우 링크를 단축하는 데 사용할 수 있습니다.
출발지https://console.firebase.google.com/
(여기서는 사용자 지정 매개 변수가 필요하지 않습니다.)
결합 페이지 어딘가에 링크를 만듭니다(여기에 매개 변수를 추가합니다).
https://PROJECTNAME.page.link/?link=https://PROJECTNAME.page.link/LINKNAME?PARAMETER=1&ofl=https://www.PROJECTNAME.com/
매개 변수는 사용자 정의 매개 변수입니다.
offl은 다른 플랫폼(PC, Mac)에서 링크를 클릭할 경우 이동할 링크입니다.
Android 프로젝트 Kotlin 코드에서 링크 데이터 가져오기:
Firebase.dynamicLinks
.getDynamicLink(intent)
.addOnSuccessListener { pendingDynamicLinkData ->
val parameter: String =
pendingDynamicLinkData?.link?.getQueryParameter("PARAMETER").orEmpty()
}
REST에서 사용자 지정 인수와 함께 동적 링크를 사용하려면 페이로드의 예를 다음에 제시합니다.
{
"dynamicLinkInfo": {
"dynamicLinkDomain": "example.app.goo.gl",
"link": "http://someurl.com?my_first_param=test&my_second_param=test2"
},
"suffix": {
"option":"UNGUESSABLE"
}
}
dynamicLinkDomain에서 'https://'을(를) 제거해야 합니다.
줄리앙
동적 링크 생성
링크 세부 정보로 이동
긴 동적 링크를 복사하고 URL의 링크 매개 변수(예: PARAMETER=132323)에 매개 변수를 추가합니다.
사례 A. 매개 변수가 여러 개인 링크로 짧은 링크를 확장하려는 경우:
동적 링크를 설정하는 부분에서 딥 링크 URL에 추가하는 매개 변수는 모든 플랫폼(웹, iOS, 안드로이드)에 적용됩니다.
사례 B. 동적 매개 변수를 사용하려면 api를 사용하여 짧은 링크를 만들어야 합니다.
설명서 참조
이제 를 통해 Firebase SDK를 사용하여 짧은 링크를 만들 수 있습니다.FirebaseDynamicLinks.getInstance().createDynamicLink()
: https://firebase.google.com/docs/dynamic-links/android/create
샘플 코드:
Task shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse("https://example.com/"))
.setDynamicLinkDomain("abc123.app.goo.gl")
// Set parameters
// ...
.buildShortDynamicLink()
.addOnCompleteListener(this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
// Short link created
Uri shortLink = task.getResult().getShortLink();
Uri flowchartLink = task.getResult().getPreviewLink();
} else {
// Error
}
}
});
1 먼저 파이어베이스 콘솔의 동적 링크를 http://exampleandroid/test에서 http://exampleandroid/test?data로 변경 2.쿼리 매개 변수 데이터를 전송합니다.
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
// .setLink(dynamicLinkUri)
.setLink(Uri.parse("http://exampleandroid/test?data=dsads"))
.setDomainUriPrefix("https://App_Name.page.link")
// Open links with this app on Android
.setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
// Open links with com.example.ios on iOS
.setIosParameters(new DynamicLink.IosParameters.Builder("com.appinventiv.ios").build())
.buildDynamicLink();
dynamicLinkUri = dynamicLink.getUri();
링크에 매개 변수를 추가하여 Firebase에서 Short URL을 생성할 수 있습니다.여기서 저는 Firebase API를 사용한 짧은 URL 생성의 예를 제시했습니다.여기 서비스 요청도우미(이거).PostCall은 API 요청을 만드는 일반 클래스입니다.
String url = "https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=YOUR_KEY";
try {
PackageManager manager = this.getPackageManager();
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
JSONObject jsonObject = new JSONObject();
JSONObject androidInfoObject = new JSONObject();
androidInfoObject.put("androidPackageName", getApplicationContext().getPackageName());
androidInfoObject.put("androidMinPackageVersionCode",String.valueOf(info.versionCode));
JSONObject iosInfoObject = new JSONObject();
iosInfoObject.put("iosBundleId", "tettares.Test_ID");
JSONObject dynamicLinkInfoObj = new JSONObject();
dynamicLinkInfoObj.put("dynamicLinkDomain", "wgv3v.app.goo.gl");
dynamicLinkInfoObj.put("link", "https://test.in/?UserId=14&UserName=Naveen"); // Pass your extra paramters to here
dynamicLinkInfoObj.put("androidInfo", androidInfoObject);
dynamicLinkInfoObj.put("iosInfo", iosInfoObject);
JSONObject suffixObject = new JSONObject();
suffixObject.put("option" , "SHORT");
jsonObject.put("dynamicLinkInfo", dynamicLinkInfoObj);
jsonObject.put("suffix", suffixObject);
Log.d("JSON Object : " , jsonObject.toString());
new ServiceRequestHelper(this).PostCall(url, jsonObject, false, new CallBackJson() {
@Override
public void done(JSONObject result) throws JSONException {
try {
if (result.has("shortLink")) {
DEEP_LINK_URL = result.getString("shortLink"); }
} catch(Exception e)
{
e.printStackTrace();
}
}
});
} catch (JSONException | PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
수신 활동:
boolean autoLaunchDeepLink = false;
AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
.setResultCallback(
new ResultCallback<AppInviteInvitationResult>() {
@Override
public void onResult(@NonNull AppInviteInvitationResult result) {
if (result.getStatus().isSuccess()) {
// Extract deep link from Intent
Intent intent = result.getInvitationIntent();
String deepLink = AppInviteReferral.getDeepLink(intent);
// Handle the deep link. For example, open the linked
// content, or apply promotional credit to the user's
// account.
// [START_EXCLUDE]
// Display deep link in the UI
Log.d(TAG, "deeplink URL: " + deeplink); // Here you get https://test.in/?UserId=14&UserName=Naveen
// [END_EXCLUDE]
} else {
Log.d(TAG, "getInvitation: no deep link found.");
}
}
});
나는 모든 것을 시도했지만 아무 일도 하지 않았습니다.그래서 저는 당신이 링크를 바꿔야 한다고 생각합니다.http://example.com/?userid=123
http://example.com/userid/123
서두를 필요가 없습니다.
- 매개 변수를 전달하려면 URL을 줄이지 마십시오.
링크를 이렇게 써주세요.
//APP_CODE is firebase link String link = "https://APP_CODE.app.goo.gl/?refferer=" + userId; Intent intent = new AppInviteInvitation.IntentBuilder(getString(R.string.invitation_title)) .setMessage(getString(R.string.invitation_custom_message))) .setDeepLink(Uri.parse(link)) .setCustomImage(Uri.parse(getString(R.string.invitation_custom_image))) .setCallToActionText(getString(R.string.invitation_cta)) .build(); startActivityForResult(intent, REQUEST_INVITE);
동적 링크를 생성하는 웹 앱의 경우.
const data = {
dynamicLinkInfo: {
domainUriPrefix: 'subdomain.page.link',
link: url,
},
suffix: {
option: 'SHORT'
}
};
return fetch(`https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=${environment.firebaseConfig.apiKey}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
}).then(res => res.json()).then(response => response.shortLink).catch(console.error);
언급URL : https://stackoverflow.com/questions/38284518/firebase-dynamic-link-support-custom-parameters
'it-source' 카테고리의 다른 글
장고: 개발 및 생산 설정을 어떻게 관리합니까? (0) | 2023.06.06 |
---|---|
이 활성 레코드의 원인:ReadOnlyRecord 오류? (0) | 2023.06.06 |
경고:-분리된 뷰 컨트롤러에는 뷰 컨트롤러를 표시하지 마십시오. (0) | 2023.06.06 |
py.test 내부 사용 중지 경고를 억제하는 방법 (0) | 2023.06.06 |
보안.예외 권한 거부: 제공자 com.google.android.gms를 엽니다.표현형, 표현형. 기호형.구성 공급자 (0) | 2023.06.06 |