# Android

### Điều kiện:

1. Bạn phải có 1 project trên [Firebase Console](https://console.firebase.google.com/).
2. Bạn cần phải cấu hình Firebase cho Android project của bạn. Hướng dẫn chi tiết [xem tại đây](https://firebase.google.com/docs/android/setup#add_firebase_to_your_app).

### 1. Nếu bạn chưa có tài khoản, hãy đăng ký tại [pushdy.com](https://dashboard.pushdy.com/#/register)

1\. Truy cập [Dashboard](https://dashboard.pushdy.com)\
2\. Tạo 1 ứng dụng nếu bạn chưa có

![](/files/-LvPTGRWP_SvBbd012UV)

### 2. Thiết lập Mobile Push cho ứng dụng của bạn

1\. Truy cập vào trang Settings.\
2\. Chọn **Google Android** để bắt đầu thiết lập.

![](/files/-LjP9X30UWSUWZVkfspm)

3\. Cấu hình Mobile Push cho Android

![](/files/-LjUAr3WD_ThUXsjIlPB)

* *FCM Key:* Bạn có thể tìm thấy mã **firebase cloud message** từ [Firebase console](https://console.firebase.google.com/) trong mục **Project Settings.** Nếu bạn chưa có Firebase project, vui lòng xem hướng dẫn tạo một Firebase project và cách lấy FCM key [tại đây](https://guide.pushdy.com/i/cai-dat/cach-tao-firebase-server-key).
* Submit để lưu và hoàn tất bước cấu hình.

### 3. Cài đặt SDK cho Android app

Bạn có thể tích hợp Pushdy cho Android App sử dụng **Java Native SDK** (ngôn ngữ lập trình Java hoặc Kotlin) hoặc **React Native SDK** (ngôn ngữ lập trình Javascript).

**Điều kiện:**\
PushdySDK chỉ hỗ trợ từ Android 4.1 (API 16) trở lên.\
Nếu bạn dùng React Native SDK thì bạn cần nâng cấp lên phiên bản <react-native@0.60.x> hoặc mới hơn.

**Cài đặt SDK:**

***A. Trường hợp sử dụng Java Native SDK, bạn cài đặt theo các bước bên dưới:***\
Mở file build.gradle trong project của bạn và thêm gói JitPack như bên dưới:

{% tabs %}
{% tab title="Java Native SDK" %}

```
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
```

{% endtab %}
{% endtabs %}

Thêm các gói phụ thuộc:

{% tabs %}
{% tab title="Java Native SDK" %}

```
dependencies {
    implementation 'com.github.Pushdy:android-pushdy-sdk:0.0.3'
}
```

{% endtab %}
{% endtabs %}

Mở file AndroidManifest.xml và cấu hình **Firebase cloud messaging service** ở bên trong thẻ application:

{% tabs %}
{% tab title="Java Native SDK" %}

```markup
<application>
    ...
    <service
        android:name="com.pushdy.services.PDYFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
</application>
```

{% endtab %}
{% endtabs %}

***B. Trường hợp sử dụng React Native SDK, bạn cài đặt theo các bước bên dưới:***\
Mở Terminal, đi tới thư mục gốc của project của bạn và chạy lệnh sau:

{% tabs %}
{% tab title="React Native SDK" %}

```
npm install react-native-pushdy --save
```

{% endtab %}
{% endtabs %}

**Sử dụng:**\
Khai báo sử dụng Pushdy SDK như sau:

{% tabs %}
{% tab title="Java" %}

```java
import com.pushdy.Pushdy;
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
import com.pushdy.Pushdy
```

{% endtab %}

{% tab title="React Native: Java" %}

```java
import com.reactNativePushdy.PushdySdk;
```

{% endtab %}
{% endtabs %}

Mở file `Application`  của bạn và tìm tới hàm `onCreate` và thêm dòng code khởi tạo Pushdy như bên dưới, đừng quên thay `YOUR_CLIENT_KEY` bằng Client Key của trong App của bạn. Bạn có thể xem cách lấy trong phần [Tạo ứng dụng](https://guide.pushdy.com/i/huong-dan-su-dung/tao-ung-dung).

{% tabs %}
{% tab title="Java" %}

```java
public class YourApplication extends Application 
                        implements Pushdy.PushdyDelegate {
    @Override
    public void onCreate() {
        super.onCreate();
        String clientKey = "YOUR_CLIENT_KEY";
        Pushdy.initWith(this, clientKey, this, R.drawable.ic_launcher_small);
    }
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
class YourApplication : Application(), Pushdy.PushdyDelegate {
    override fun onCreate() {
        super.onCreate()
        val clientKey = "YOUR_CLIENT_KEY"
        Pushdy.initWith(this, clientKey, this, R.drawable.ic_launcher_small)
    }
}
```

{% endtab %}

{% tab title="React Native: Java" %}

```java
public class YourApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        String clientKey = "YOUR_CLIENT_KEY";
        PushdySdk.getInstance().registerSdk(clientKey, 
            this, R.mipmap.ic_notification);
    }
}
```

{% endtab %}
{% endtabs %}

***Trường hợp bạn dùng React Native SDK, bạn hãy làm thêm 2 bước dưới đây để Pushdy SDK hoạt động:***\
Bước 1: Mở file `Activity`  của bạn và tìm tới hàm `onNewIntent` và thêm vào dòng code `setIntent` như bên dưới theo đúng thứ tự:

{% tabs %}
{% tab title="React Native: Java" %}

```java
@Override
public void onNewIntent(Intent intent) {
    setIntent(intent);
    super.onNewIntent(intent);
}
```

{% endtab %}
{% endtabs %}

&#x20;Bước 2: Mở project React Native cho Javascript và gọi hàm  để kích hoạt React Native SDK hoạt động:

{% tabs %}
{% tab title="React Native: Javascript" %}

```java
await Pushdy.initPushdy({
    deviceId: 'YOUR DEVICE ID'
});
```

{% endtab %}
{% endtabs %}

Như vậy là bạn đã cài đặt xong Pushdy SDK cho Android App và sẵn sàng sử dụng các tính năng.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guide.pushdy.com/i/cai-dat-mobile-push/android.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
