Hướng dẫn dành cho nhà phát triển này mô tả cách triển khai Trình quản lý thẻ của Google trong một ứng dụng dành cho thiết bị di động.
Giới thiệu
Trình quản lý thẻ của Google cho phép nhà phát triển thay đổi cấu hình trong các ứng dụng di động của họ bằng Trình quản lý thẻ của Google giao diện mà không phải tạo lại và gửi lại tệp nhị phân của ứng dụng đến ứng dụng thị trường.
Điều này hữu ích để quản lý mọi giá trị cấu hình hoặc gắn cờ trong ứng dụng mà bạn có thể cần thay đổi trong tương lai, bao gồm:
- Nhiều chế độ cài đặt giao diện người dùng và chuỗi hiển thị
- Kích thước, vị trí hoặc loại quảng cáo được phân phát trong ứng dụng của bạn
- Cài đặt trò chơi
Giá trị cấu hình cũng có thể được đánh giá trong thời gian chạy bằng cách sử dụng các quy tắc, bật các cấu hình động như:
- Sử dụng kích thước màn hình để xác định kích thước biểu ngữ quảng cáo
- Sử dụng ngôn ngữ và vị trí để định cấu hình các phần tử trên giao diện người dùng
Trình quản lý thẻ của Google cũng cho phép triển khai động các thẻ theo dõi và pixel trong ứng dụng. Nhà phát triển có thể đẩy các sự kiện quan trọng vào một dữ liệu và quyết định thẻ theo dõi hoặc pixel nào sẽ được kích hoạt. TagManager hiện hỗ trợ các thẻ sau:
- Google Mobile App Analytics
- Thẻ Lệnh gọi hàm tuỳ chỉnh
Trước khi bạn bắt đầu
Trước khi sử dụng hướng dẫn bắt đầu này, bạn sẽ cần những thứ sau:
- Tài khoản Trình quản lý thẻ của Google
- Trình quản lý thẻ mới vùng chứa và macro tập hợp giá trị
- Ứng dụng dành cho thiết bị di động dành cho Android để triển khai Trình quản lý thẻ của Google
- Dịch vụ Google Analytics SDK chứa thư viện Trình quản lý thẻ.
Nếu mới sử dụng Trình quản lý thẻ của Google, bạn nên tìm hiểu thêm về vùng chứa, macro và quy tắc (Trung tâm trợ giúp) trước khi tiếp tục hướng dẫn này.
Bắt đầu
Mục này sẽ hướng dẫn nhà phát triển thông qua quy trình làm việc thông thường của Trình quản lý thẻ:
- Thêm SDK Trình quản lý thẻ của Google vào dự án
- Đặt giá trị vùng chứa mặc định
- Mở vùng chứa
- Nhận giá trị cấu hình từ vùng chứa
- Đẩy sự kiện lên DataLayer
- Xem trước và Xuất bản vùng chứa
1. Thêm SDK Trình quản lý thẻ của Google vào dự án của bạn
Trước khi sử dụng SDK Trình quản lý thẻ của Google, bạn cần giải nén gói SDK
và thêm thư viện vào đường dẫn tạo dự án của bạn và thêm các quyền
vào tệp AndroidManifest.xml
.
Trước tiên, hãy thêm thư viện Trình quản lý thẻ của Google vào thư mục /libs
của
dự án của bạn.
Tiếp theo, hãy cập nhật tệp AndroidManifest.xml của bạn để sử dụng các quyền:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
2. Thêm tệp vùng chứa mặc định vào dự án
Trình quản lý thẻ của Google sử dụng vùng chứa mặc định trong lần chạy đầu tiên ứng dụng của bạn. Mặc định vùng chứa sẽ được sử dụng cho đến khi ứng dụng có thể truy xuất một vùng chứa mới qua mạng.
Để tải xuống và thêm tệp nhị phân của vùng chứa mặc định vào ứng dụng của bạn, hãy làm theo các bước sau:
- Đăng nhập vào giao diện web của Trình quản lý thẻ của Google.
- Chọn Phiên bản của vùng chứa bạn muốn tải xuống.
- Nhấp vào nút Download (Tải xuống) để truy xuất tệp nhị phân của vùng chứa.
- Thêm tệp nhị phân vào
đường dẫn sau:
<project-root>/assets/tagmanager/
Tên tệp mặc định phải là mã nhận dạng vùng chứa (ví dụ: GTM-1234
). Sau khi tải tệp nhị phân xuống, hãy nhớ xoá hậu tố phiên bản khỏi tên tệp để đảm bảo bạn tuân thủ đúng quy ước đặt tên.
Mặc dù bạn nên sử dụng tệp nhị phân, nhưng nếu vùng chứa của bạn không chứa các quy tắc hoặc thẻ,
bạn có thể chọn sử dụng
JSON
thay thế.
Tệp này phải nằm trong một /assets/tagmanager
mới
của dự án Android và nên tuân theo quy ước đặt tên sau:
<Container_ID>.json
. Ví dụ: nếu mã vùng chứa của bạn
là GTM-1234
, bạn nên thêm các giá trị vùng chứa mặc định vào
/assets/tagmanager/GTM-1234.json
.
3. Mở vùng chứa
Trước khi truy xuất các giá trị từ một vùng chứa, ứng dụng của bạn cần mở vùng chứa. Thao tác mở một vùng chứa sẽ tải vùng chứa đó từ ổ đĩa (nếu có), hoặc sẽ yêu cầu mã từ mạng (nếu cần).
Cách dễ nhất để mở một vùng chứa trên Android là sử dụng
ContainerOpener.openContainer(..., Notifier notifier)
, như trong ví dụ sau:
import com.google.tagmanager.Container; import com.google.tagmanager.ContainerOpener; import com.google.tagmanager.ContainerOpener.OpenType; import com.google.tagmanager.TagManager; import android.app.Activity; import android.os.Bundle; public class RacingGame { // Add your public container ID. private static final String CONTAINER_ID = "GTM-YYYY"; volatile private Container mContainer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TagManager mTagManager = TagManager.getInstance(this); // The container is returned to containerFuture when available. ContainerOpener.openContainer( mTagManager, // TagManager instance. CONTAINER_ID, // Tag Manager Container ID. OpenType.PREFER_NON_DEFAULT, // Prefer not to get the default container, but stale is OK. null, // Time to wait for saved container to load (ms). Default is 2000ms. new ContainerOpener.Notifier() { // Called when container loads. @Override public void containerAvailable(Container container) { // Handle assignment in callback to avoid blocking main thread. mContainer = container; } } ); // Rest of your onCreate code. } }
Trong ví dụ này, ContainerOpener.openContainer(..., Notifier notifier)
được dùng để
yêu cầu một vùng chứa đã lưu từ bộ nhớ cục bộ. Bằng cách xử lý việc chỉ định
mContainer
trong lệnh gọi lại containerAvailable
, chúng ta đảm bảo rằng
luồng chính không bị chặn. Nếu vùng chứa đã lưu cũ hơn 12 giờ,
lệnh gọi này cũng sẽ lên lịch yêu cầu truy xuất không đồng bộ một vùng chứa mới
qua mạng.
Cách triển khai mẫu này thể hiện cách đơn giản nhất để mở và truy xuất
các giá trị từ một vùng chứa bằng cách sử dụng lớp tiện lợi ContainerOpener
.
Để biết thêm các cách triển khai nâng cao, hãy xem phần Cấu hình nâng cao.
4. Nhận giá trị cấu hình từ vùng chứa
Khi vùng chứa mở, bạn có thể truy xuất giá trị cấu hình bằng cách sử dụng
get<type>Value()
phương thức:
// Retrieving a configuration value from a Tag Manager Container. // Get the configuration value by key. String title = mContainer.getStringValue("title_string");
Các yêu cầu được thực hiện bằng khoá không tồn tại sẽ trả về giá trị mặc định phù hợp thành loại được yêu cầu:
// Empty keys will return a default value depending on the type requested. // Key does not exist. An empty string is returned. string subtitle = container.getStringValue("Non-existent-key"); subtitle.equals(""); // Evaluates to true.
5. Đẩy các giá trị đến DataLayer
DataLayer là một bản đồ cho phép thông tin về ứng dụng trong thời gian chạy, chẳng hạn như thao tác chạm sự kiện hoặc lượt xem màn hình, để áp dụng cho các macro và thẻ của Trình quản lý thẻ trong vùng chứa.
Ví dụ: bằng cách đẩy thông tin về chế độ xem màn hình vào bản đồ DataLayer, bạn có thể thiết lập thẻ trong giao diện web của Trình quản lý thẻ để kích hoạt pixel chuyển đổi cũng như theo dõi cuộc gọi để phản hồi những lượt xem màn hình đó mà không cần tốn công sức lập trình vào ứng dụng của bạn.
Các sự kiện được đẩy đến DataLayer bằng cách sử dụng push()
và
Phương thức trợ giúp DataLayer.mapOf()
:
// // MainActivity.java // Pushing an openScreen event with a screen name into the data layer. // import com.google.tagmanager.TagManager; import com.google.tagmanager.DataLayer; import android.app.Activity; import android.os.Bundle; public MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } // This screen becomes visible when Activity.onStart() is called. public void onStart() { super.onStart(); // The container should have already been opened, otherwise events pushed to // the DataLayer will not fire tags in that container. DataLayer dataLayer = TagManager.getInstance(this).getDataLayer(); dataLayer.push(DataLayer.mapOf("event", "openScreen", // The event type. This value should be used consistently for similar event types. "screenName", // Writes a key "screenName" to the dataLayer map. "Home Screen") // Writes a value "Home Screen" for the "screenName" key. ); } // Rest of the Activity implementation }
Trong giao diện web, bạn hiện có thể tạo thẻ (như thẻ Google Analytics) để kích hoạt cho mỗi lượt xem màn hình bằng cách tạo quy tắc sau: bằng "openScreen". Để chuyển tên màn hình vào một trong các thẻ này, hãy tạo macro lớp dữ liệu tham chiếu đến "screenName" vào lớp dữ liệu. Bạn cũng có thể tạo một thẻ (như pixel chuyển đổi trên Google Ads) để chỉ kích hoạt cho một số lượt xem màn hình cụ thể, theo cách tạo quy tắc trong đó bằng "openScreen" && là "ConfirmationScreen" ("Xác nhận màn hình").
6. Xem trước và Xuất bản vùng chứa
Giá trị macro sẽ luôn tương ứng với phiên bản đã phát hành hiện tại. Trước khi xuất bản phiên bản mới nhất của một vùng chứa, bạn có thể xem trước vùng chứa nháp của bạn.
Để xem trước một vùng chứa, hãy tạo một URL xem trước trong
Giao diện web của Trình quản lý thẻ bằng cách chọn phiên bản vùng chứa
bạn muốn xem trước, sau đó chọn Preview
. Chờ
URL xem trước này vì bạn sẽ cần đến nó trong các bước sau.
Tiếp theo, hãy thêm Hoạt động sau đây vào
Tệp AndroidManifest.xml
:
<!-- Google Tag Manager Preview Activity --> <activity android:name="com.google.tagmanager.PreviewActivity" android:label="@string/app_name" android:noHistory="true" > <!-- Optional, removes the PreviewActivity from activity stack. --> <intent-filter> <data android:scheme="tagmanager.c.application_package_name" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity>
Mở đường liên kết trên trình mô phỏng hoặc thiết bị thực để xem trước vùng chứa dự thảo trong ứng dụng của bạn.
Khi bạn đã sẵn sàng cung cấp các giá trị cấu hình nháp cho ứng dụng, hãy phát hành vùng chứa.
Cấu hình nâng cao
Trình quản lý thẻ của Google dành cho thiết bị di động có một số cấu hình nâng cao cho phép bạn chọn các giá trị dựa trên điều kiện thời gian chạy bằng cách sử dụng quy tắc, làm mới vùng chứa theo cách thủ công và có được các lựa chọn bổ sung để mở vùng chứa. Các phần sau đây trình bày một số .
Các tuỳ chọn nâng cao để mở vùng chứa
SDK Trình quản lý thẻ của Google cung cấp một số phương pháp để mở vùng chứa có thể cho phép bạn kiểm soát nhiều hơn đối với quá trình tải:
TagManager.openContainer()
TagManager.openContainer()
là API cấp thấp nhất và linh hoạt nhất để mở một
vùng chứa. URL này sẽ trả về ngay lập tức với vùng chứa mặc định và
cũng tải không đồng bộ vùng chứa từ ổ đĩa hoặc mạng nếu không lưu
vùng chứa tồn tại hoặc nếu vùng chứa đã lưu không mới (cũ hơn 12 giờ).
mContainer = tagManager.openContainer(CONTAINER_ID, new Container.Callback() { // Called when a refresh is about to begin for the given refresh type. @Override public void containerRefreshBegin(Container container, RefreshType refreshType) { // Notify UI that the Container refresh is beginning. } // Called when a successful refresh occurred for the given refresh type. @Override public void containerRefreshSuccess(Container container, RefreshType refreshType]) { // Notify UI that Container is ready. } // Called when a refresh failed for the given refresh type. @Override public void containerRefreshFailure(Container container, RefreshType refreshType, RefreshFailure refreshFailure) { // Notify UI that the Container refresh has failed. }
Trong suốt quá trình tải, xảy ra TagManager.openContainer()
vấn đề
một số phương thức gọi lại trong vòng đời để mã của bạn có thể xác định thời điểm
bắt đầu yêu cầu tải, liệu yêu cầu có thành công hay không và tại sao yêu cầu đó thất bại, cũng như
vùng chứa cuối cùng đã được tải từ đĩa hoặc mạng.
Trừ phi ứng dụng của bạn được phép sử dụng các giá trị mặc định, bạn sẽ cần sử dụng các lệnh gọi lại này để biết khi nào một mạng đã lưu hoặc vùng chứa đã tải. Xin lưu ý rằng bạn sẽ không thể tải tệp vùng chứa mạng nếu đây là lần đầu tiên ứng dụng được chạy và không có kết nối mạng.
TagManager.openContainer()
vượt qua enum
sau
các giá trị làm đối số cho các lệnh gọi lại này:
RefreshType
Giá trị | Mô tả |
---|---|
Container.Callback.SAVED
|
Yêu cầu làm mới đang tải một vùng chứa đã lưu cục bộ. |
Container.Callback.NETWORK
|
Yêu cầu làm mới đang tải một vùng chứa qua mạng. |
RefreshFailure
Giá trị | Mô tả |
---|---|
Container.Callback.NO_SAVED_CONTAINER
|
Hiện không có vùng chứa đã lưu nào. |
Container.Callback.IO_ERROR
|
Lỗi I/O đã ngăn làm mới vùng chứa. |
Container.Callback.NO_NETWORK
| Không có kết nối mạng. |
Container.Callback.NETWORK_ERROR
|
Đã xảy ra lỗi mạng. |
Container.Callback.SERVER_ERROR
|
Đã xảy ra lỗi trên máy chủ. |
Container.Callback.UNKNOWN_ERROR
|
Đã xảy ra lỗi không thể phân loại. |
Phương thức mở vùng chứa không mặc định và vùng chứa mới
ContainerOpener
kết thúc TagManager.openContainer()
và cung cấp 2 phương thức thuận tiện để mở vùng chứa:
ContainerOpener.openContainer(..., Notifier notifier)
và
ContainerOpener.openContainer(..., Long timeoutInMillis)
.
Mỗi phương thức trong số này có một bản liệt kê yêu cầu một phương thức không phải phương thức mặc định hoặc vùng chứa mới.
Bạn nên dùng OpenType.PREFER_NON_DEFAULT
cho hầu hết các ứng dụng và
cố gắng trả về vùng chứa không phải là vùng chứa mặc định có sẵn đầu tiên trong một vùng chứa nhất định
khoảng thời gian chờ, từ đĩa hoặc mạng, ngay cả khi vùng chứa đó lớn hơn
hơn 12 giờ. Nếu trả về một vùng chứa đã lưu cũ, điều này cũng sẽ
yêu cầu mạng không đồng bộ cho một yêu cầu mới.
Khi sử dụng OpenType.PREFER_NON_DEFAULT
, giá trị mặc định
vùng chứa sẽ được trả về nếu không có vùng chứa nào khác hoặc nếu khoảng thời gian chờ
vượt quá.
OpenType.PREFER_FRESH
cố gắng trả về một vùng chứa mới từ
ổ đĩa hoặc mạng trong khoảng thời gian chờ nhất định.
Phương thức này sẽ trả về một vùng chứa đã lưu nếu một mạng
kết nối không khả dụng và/hoặc đã vượt quá khoảng thời gian chờ.
Không nên sử dụng OpenType.PREFER_FRESH
ở những nơi mà thời gian yêu cầu lâu hơn có thể ảnh hưởng đáng kể đến trải nghiệm người dùng,
chẳng hạn như với cờ giao diện người dùng hoặc chuỗi hiển thị. Bạn cũng có thể sử dụng
Container.refresh()
bất kỳ lúc nào
để buộc thực hiện một yêu cầu vùng chứa mạng.
Cả hai phương thức tiện lợi này đều không chặn.
ContainerOpener.openContainer(..., Long timeoutInMillis)
trả về một
Đối tượng ContainerOpener.ContainerFuture
có phương thức get
trả về một
Container
ngay khi tải (nhưng sẽ chặn cho đến thời điểm đó).
Phương thức ContainerOpener.openContainer(..., Notifier notifier)
thực hiện một lệnh gọi lại duy nhất,
được gọi khi vùng chứa có sẵn,
có thể dùng để ngăn chặn việc chặn luồng chính.
Cả hai phương pháp đều có khoảng thời gian chờ mặc định là
2000
mili giây.
Đánh giá macro trong thời gian chạy bằng cách sử dụng quy tắc
Các vùng chứa có thể đánh giá giá trị trong thời gian chạy bằng cách sử dụng quy tắc. Các quy tắc có thể dựa trên vào các tiêu chí như ngôn ngữ của thiết bị, nền tảng hoặc bất kỳ giá trị macro nào khác. Để Ví dụ: bạn có thể sử dụng các quy tắc để chọn một chuỗi hiển thị được bản địa hoá dựa trên ngôn ngữ của thiết bị trong thời gian chạy. Tính năng này có thể được định cấu hình bằng cách sử dụng quy tắc sau:
Sau đó, bạn có thể tạo macro tập hợp giá trị cho mỗi ngôn ngữ và thêm đoạn mã này cho mỗi macro, chèn mã ngôn ngữ thích hợp. Trường hợp vùng chứa này đã được xuất bản, ứng dụng của bạn sẽ có thể hiển thị màn hình đã bản địa hoá chuỗi, tuỳ thuộc vào ngôn ngữ trên thiết bị của người dùng trong thời gian chạy.
Lưu ý rằng nếu vùng chứa mặc định của bạn cần quy tắc, bạn phải sử dụng tệp vùng chứa nhị phân làm mặc định vùng chứa.
Tìm hiểu thêm về cách thiết lập quy tắc (Trung tâm trợ giúp).
Tệp vùng chứa mặc định nhị phân
Các vùng chứa mặc định cần quy tắc nên sử dụng tệp vùng chứa nhị phân thay vì JSON làm vùng chứa mặc định. Vùng chứa nhị phân cung cấp hỗ trợ cho việc xác định các giá trị macro trong thời gian chạy bằng quy tắc Trình quản lý thẻ của Google, trong khi đó JSON thì không.
Bạn có thể tải các tệp vùng chứa nhị phân xuống từ trang web của Trình quản lý thẻ của Google
giao diện và
cần được thêm vào thuộc tính
/assets/tagmanager/
thư mục và tuân theo mẫu sau:
/assets/tagmanager/GTM-XXXX
, trong đó tên tệp đại diện cho
mã vùng chứa.
Trong trường hợp tệp JSON cũng như có tệp vùng chứa nhị phân, SDK sẽ sử dụng vùng chứa nhị phân làm vùng chứa mặc định.
Sử dụng macro lệnh gọi hàm
Macro lệnh gọi hàm là các macro được đặt thành giá trị trả về của một hàm được chỉ định trong ứng dụng của bạn. Macro lệnh gọi hàm có thể được sử dụng để kết hợp các giá trị thời gian chạy với quy tắc của Trình quản lý thẻ của Google, chẳng hạn như trong thời gian chạy, xác định mức giá cần hiển thị cho người dùng dựa trên chế độ cài đặt đã định cấu hình ngôn ngữ và đơn vị tiền tệ của thiết bị.
Cách định cấu hình macro lệnh gọi hàm:
- Xác định macro lệnh gọi hàm trong giao diện web của Trình quản lý thẻ của Google. Bạn có thể định cấu hình các đối số dưới dạng cặp khoá-giá trị (không bắt buộc).
- Đăng ký
FunctionCallMacroHandler
trong ứng dụng của bạn bằngContainer.registerFunctionCallMacroHandler()
và tên hàm mà bạn đã thiết lập trong giao diện web của Trình quản lý thẻ của Google, ghi đè Phương thứcgetValue()
:/** * Registers a function call macro handler. * * @param functionName The function name field, as defined in the Google Tag * Manager web interface. */ mContainer.registerFunctionCallMacroHandler(functionName, new FunctionCallMacroHandler() { /** * This code will execute when any custom macro's rule(s) evaluate to true. * The code should check the functionName and process accordingly. * * @param functionName Corresponds to the function name field defined * in the Google Tag Manager web interface. * @param parameters An optional map of parameters * as defined in the Google Tag Manager web interface. */ @Override public Object getValue(String functionName, Map<String, Object> parameters)) { if (functionName.equals("myConfiguredFunctionName")) { // Process and return the calculated value of this macro accordingly. return macro_value } return null; } });
Sử dụng thẻ lệnh gọi hàm
Thẻ lệnh gọi hàm cho phép thực thi các hàm đã đăng ký trước bất cứ khi nào
một sự kiện được đẩy vào lớp dữ liệu và quy tắc thẻ
đánh giá thành true
.
Cách định cấu hình thẻ lệnh gọi hàm:
- Xác định thẻ lệnh gọi hàm trong giao diện web của Trình quản lý thẻ của Google. Bạn có thể định cấu hình các đối số dưới dạng cặp khoá-giá trị (không bắt buộc).
- Đăng ký trình xử lý thẻ lệnh gọi hàm trong ứng dụng của bạn bằng cách sử dụng
Container.registerFunctionCallTagHandler()
:/** * Register a function call tag handler. * * @param functionName The function name, which corresponds to the function name field * Google Tag Manager web interface. */ mContainer.registerFunctionCallTagHandler(functionName, new FunctionCallTagHandler() { /** * This method will be called when any custom tag's rule(s) evaluates to true. * The code should check the functionName and process accordingly. * * @param functionName The functionName passed to the functionCallTagHandler. * @param parameters An optional map of parameters as defined in the Google * Tag Manager web interface. */ @Override public void execute(String functionName, Map<String, Object> parameters) { if (functionName.equals("myConfiguredFunctionName")) { // Process accordingly. } } });
Đặt khoảng thời gian làm mới tuỳ chỉnh
SDK Trình quản lý thẻ của Google sẽ cố truy xuất
một vùng chứa mới nếu tuổi vùng chứa hiện tại vượt quá 12 giờ. Để đặt một
khoảng thời gian làm mới vùng chứa tuỳ chỉnh, hãy sử dụng
Timer
, như trong
ví dụ sau:
timer.scheduleTask(new TimerTask() { @Override public void run() { mContainer.refresh(); } }, delay, <new_period_in milliseconds>);
Gỡ lỗi bằng Trình ghi nhật ký
Theo mặc định, SDK Trình quản lý thẻ của Google sẽ in lỗi và cảnh báo vào nhật ký.
Việc bật tính năng ghi nhật ký chi tiết hơn có thể hữu ích cho việc gỡ lỗi và có thể thực hiện được bằng cách
triển khai Logger
của riêng bạn bằng
TagManager.setLogger
, như trong ví dụ này:
TagManager tagManager = TagManager.getInstance(this); tagManager.setLogger(new Logger() { final String TAG = "myGtmLogger"; // Log output with verbosity level of DEBUG. @Override public void d(String arg0) { Log.d(TAG, arg0); } // Log exceptions when provided. @Override public void d(String arg0, Throwable arg1) { Log.d(TAG, arg0); arg1.printStackTrace(); } // Rest of the unimplemented Logger methods. });
Hoặc bạn có thể đặt LogLevel của Logger hiện có bằng cách sử dụng
TagManager.getLogger().setLogLevel(LogLevel)
,
như trong ví dụ sau:
// Change the LogLevel to INFO to enable logging at INFO and higher levels. TagManager tagManager = TagManager.getInstance(this); tagManager.getLogger().setLogLevel(LogLevel.INFO);