Мобильные Push-уведомления

Мобильные уведомления интегрируют ваше приложение для iOS и Android с One Signal. Используя собственные учетные записи OneSignal, вы теперь можете отправлять уведомления на мобильное устройство ваших контактов (с их разрешения). Включите их в конфигурации Mautic, чтобы увидеть их в списке каналов в меню.

Для получения дополнительной информации смотрите документацию One Signal iOS и документацию One Signal Android.

Настройка

Код iOS для интеграции OneSignal

Чтобы включить push-уведомления в вашем приложении для iOS, добавьте следующий код (или его вариант) в функцию application функции AppDelegate. В примерах кода ниже используется Swift 3.1. Пожалуйста, измените их под свои нужды, если вы используете C#.

// Каким-то образом определите email пользователя. Если у вас есть учетные записи пользователей, возможно, будет лучше перенести...
// это за пределы функции `application` функции `AppDelegate`, чтобы определить email пользователя.
// В этом примере адрес жестко закодирован для простоты использования.
let userEmail = "you@domain.com"

OneSignal.initWithLaunchOptions(launchOptions, appId: "YOUR-ONE-SIGNAL-APP-ID")
OneSignal.syncHashedEmail(userEmail);

OneSignal.idsAvailable({(_ userId, _ pushToken) in
    let pushId = userId != nil ? userId : ""
    pushEnabled = pushToken != nil ? true : false
    let userData = UserData(email: userEmail, push_id: pushId!, enabled: pushEnabled)

    self.pushUserDataToMautic(userData, "https://dev.mautic.com/notification/appcallback")
});

Для простоты использования я создал следующие struct и func для отправки пользовательских данных в Mautic. Создайте этот struct в своем приложении и импортируйте его там, где это необходимо.

UserData struct

struct UserData {
    var email = String()
    var push_id = String()
    var enabled = Bool()

    static func toJSON(_ userData: UserData) -> String {
        let email = userData.email
        let pushId = userData.push_id
        let enabled = userData.enabled

        return "{\"email\":\"\(email)\",\"push_id\":\"\(pushId)\",\"enabled\":\(enabled)}"
    }
}

pushUserDataToMautic func

Это базовая функция для передачи структуры UserData в вашу установку Mautic. Она будет передавать данные пользователя, а затем отображать ответ от Mautic в виде оповещения приложения. Измените ее в соответствии с потребностями вашего приложения.

func pushUserDataToMautic(_ userData: UserData, _ url: String) {
    var request = URLRequest(url: URL(string: url)!)
    request.httpMethod = "POST"

    let postString = UserData.toJSON(userData)
    request.httpBody = postString.data(using: .utf8)

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {
            // проверка на фундаментальную сетевую ошибку
            возврат
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
            // проверка на наличие ошибок http
            return
        }

        // Закомментируйте следующие 4 строки, чтобы убрать предупреждение 
        let responseString = String(data: data, encoding: .utf8)
        let alert = UIAlertController(title: "Response Data", message: responseString, preferredStyle: UIAlertControllerStyle.alert)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
        self.window?.rootViewController?.present(alert, animated: true, completion: nil);
    }
    task.resume()
}

Код Android для интеграции OneSignal

Скоро будет...

Статистика уведомлений

В дополнение к UserData, которые передаются в Mautic, вы можете передавать статистику открытия / взаимодействия в Mautic, отправив структуру UserData с добавлением JSON-ключа stat.