Мобильные уведомления интегрируют ваше приложение для iOS и Android с One Signal. Используя собственные учетные записи OneSignal, вы теперь можете отправлять уведомления на мобильное устройство ваших контактов (с их разрешения). Включите их в конфигурации Mautic, чтобы увидеть их в списке каналов в меню.
Для получения дополнительной информации смотрите документацию One Signal iOS и документацию One Signal Android.
Чтобы включить 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 в своем приложении и импортируйте его там, где это необходимо.
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)}"
}
}
Это базовая функция для передачи структуры 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()
}
Скоро будет...
В дополнение к UserData, которые передаются в Mautic, вы можете передавать статистику открытия / взаимодействия
в Mautic, отправив структуру UserData с добавлением JSON-ключа stat
.