Здесь используетсяuni-appВходит в комплектUniPush1.0 (персональный push-сервис),Так что только дляUniPush1.0Познакомьтесь с этапами реализации。
Рекомендуемые статьи к прочтению:
Конечно, это сейчас вышлоUniPush2.0(HBuilderX 3.5.1и выше поддерживаются версии),По-прежнему рекомендуется для новых проектов.UniPush2.0。
Если вы хотите использоватьUniPush2.0,Пожалуйста, переместите UniPush 2.0 Руководство пользователя 。
Первые пять фотографийAndroid(HUAWEI P30 Pro)Реальный машинный эффект,Следующие три картинкиIos(iPhone XS Max)Реальный машинный эффект。
UniPushдаDCloudИнтегрированная унифицированная система запущена компанией Liangetuiтолкать Служить,Apple, встроенный、Хуавей、Просо、OPPO、VIVO、Мейзу、Google FCM Подождите, пока появятся предложения на системном уровне от производителей мобильных телефонов и сторонние предложения, например персональные предложения.
одомашненныйAndroidизPushда一个混乱из世界,потому чтоGoogleизPushСлужитьFCM обнесенный стеной(отHBuilderX2.7.10начинать,Поддержка Google FCM,ссылка: UniPush поддерживает руководство по настройке Google push FCM),Поэтому некоторые отечественные производители мобильных телефонов на базе Android сделали свои собственные толкования.,Такие как Huawei, Xiaomi, OPPO, VIVO, Meizu и т. д.,Но все еще есть много отечественных производителей мобильных телефонов, которые не предоставляют официальных трехсторонних независимых компаний, таких как Tweet.,затем предоставляет независимый план push-уведомлений.
в нетUniPushдо,Если вы используете только сторонниеpush,会在很多国产手机上потому что节电设置而无法保活pushпроцесс,В результате невозможность говорить.
而如果每个Андроид手机из官方Push SDKВсе интегрировано и развито,так много платформ,Объем работы будет огромным,Управление и обслуживание также проблематичны.
UniPushРешил эту проблему,Разработчикам нужно разработать только один раз。系统会自动在不同手机上选择最可靠изтолкатьпередача каналаpushинформация,Гарантированная скорость доставки.
UniPushт.е. снижение затрат на разработку、Снова улучшеноpushСкорость доставки,и бесплатно,На данный момент это лучшее решение для толкать план.
существительное | объяснять |
---|---|
уведомление | После указания заголовка и содержания уведомления Getui SDK автоматически отображает сообщение панели уведомлений на системной панели уведомлений и в то же время звонит или вибрирует, чтобы напомнить пользователю (на звонок и вибрацию влияет состояние настроек мобильного телефона). система). |
Прозрачное сообщение | То есть клиенты могут сами определять формат тела сообщения, например обычный текст и JSON. 串等。Прозрачное сообщение только передает данные без какой-либо обработки. Клиент получает Прозрачное. После нажатия на сообщение вам необходимо самостоятельно выполнить последующие действия, такие как отображение панели уведомлений, всплывающих окон и т. д. |
ClientId | Внешний идентификатор пользователя на бизнес-уровне Getui используется для идентификации личности клиента. Он получается сторонним клиентом и сохраняется на стороннем сервере. Это уникальный идентификационный номер Getui SDK, называемый CID. . |
Онлайн-толчок | Когда приложение открыто и работает на переднем плане, сообщения отправляются через личные push-каналы. |
Оффлайн push | Когда приложение находится в фоновом режиме, заблокировано на экране или процесс закрыт, сообщения отправляются по каналам производителя. Если не интегрировано android Мультивендорный, не настроен ios толкать сертификат, модель нельзя использовать с Оффлайном push。 |
Более Глоссарийссылка:Персональная рекомендация Глоссарий 。
UniPush内部封装好了个推及主流厂商 SDK,Необходимо использовать перед использованием Открыть Связанный Служить:Нажмите здесь, чтобы узнать, как активировать push-сервис UniPush.。
Открыть Центр разработчиков DCloud,После входа в систему вы войдетеМой список приложений。Нажмите на меню слеваuniPush,Затем выберите 1.0 или 2.0.,ВходитьUni Pushинформационная страница,В верхнем левом углу показано приложение, с которым вы работаете в данный момент.,Нажмите, чтобы переключить приложения. Как показано ниже:
Первое использование пользователяUniPushфункция,Идентификационные данные необходимо синхронизировать с Push. Пользователи, прошедшие аутентификацию по настоящему имени,Информация для аутентификации настоящего имени будет напрямую синхронизирована с толкателем. Как показано ниже:
Пользователям, которые не предоставили свои данные для аутентификации настоящего имени, необходимо ввести соответствующую информацию на странице и отправить ее, как показано на рисунке ниже:
приложение ОткрытьUniPushфункция,Необходимо предоставить информацию, связанную с заявкой.,Как показано ниже:
Уведомление:UniPushПрименение Открытьчас,需要确保输入изНазвание пакета AndroidилиiOS Bundle IDДолжно быть с打包час Конфигурацияизпоследовательный,В противном случае сообщение толкать может быть не получено.
Платформа Андроид: Название пакета AndroidДолжно быть сHBuilderXсерединаApp云端打包час КонфигурацияизНазвание пакета Androidпоследовательный;Подписание Android-приложений必须填入打包час使用证书изОтпечаток SHA1。 Платформа iOS: iOS BundleIdДолжно быть сHBuilderXсерединаApp云端打包час КонфигурацияизBundle ID(AppID)последовательный。
если уже ОткрытьUniPush,Вы увидите следующую страницу:
Если вам нужно поддержать мейнстримAndroidКлиент-производитель получает Оффлайн нажмите, вам нужно завершить :Android Конфигурация нескольких поставщиков 。
Платформа iOS по-прежнему требует загрузки страницы 【Управление конфигурацией】-【Конфигурация приложения】 и отправки сертификата.,Как получитьтолкать证书请ссылка个推官方文档教程:Руководство по настройке сертификата iOS。
// Слушайте push-сообщения а также Ответ на серверные данные
import phoneInfo from '@/common/js/phone-info.js';
import store from '@/store'
let timer = null;
let numloop = 0;
import {
pushEscalation // Интерфейс, к которому привязан псевдоним
} from "@/api/client-notice.js"
// информациятолкать Конфигурация приложения (для серверной части)
const uniPushObj = {
cid: "",
AppID: «Ваш AppID»,
AppKey: «Ваш ключ приложения»,
AppSecret: «Ваш AppSecret»,
MasterSecret: «Ваш Мастер Секрет»,
}
export default {
getInfo() {
uni.getSystemInfo({
success: res => {
phoneInfo.systemInfo = res;
}
});
},
// Включи мониторингтолкать
pushListener() {
const token = uni.getStorageSync("token") || store.state.token;
const platform = phoneInfo.systemInfo.platform.toLowerCase();
// Нажмите кнопку сказать информацию
plus.push.addEventListener('click', res => {
// На самом деле, вы можете написать это на основе вашего собственного бизнеса здесь.
if (token) {
if (platform == 'android') {
const msg_type = res.payload.msg_type // 0 онлайн || 1 Оффлайн
// сделай что-нибудь Управляйте своей логикой здесь
if (msg_type == 0) {
console.log('Андроид------онлайн');
} else {
console.log('Андроид------Оффлайн');
}
} else {
// онлайн
if (res.aps == null) {
console.log('яблоко------онлайн');
} else {
// Оффлайн
console.log('яблоко------Оффлайн');
}
}
} else {
// Страница входа переходит сюда
uni.redirectTo({
url: `pages/Login-Reg/Login/email-login`
})
}
});
// Получать толкать сообщения онлайн
plus.push.addEventListener('receive', res => {
const messageTitle = res.title;
const messageContent = res.content;
if (platform == 'android') {
/***
Андроид не может слушать Поскольку формат Android инкапсулирован, он отображается на панели уведомлений.
Просто измените формат (например, если в нем несколько полей, измените названия полей)
*/
/***
Прозрачное в этом формате сообщение由 unipush Была проведена специальная обработка, Панель уведомлений будет отображаться автоматически
Разработчики также могут настраивать другие форматы, Управляйте этим самостоятельно на стороне клиента
*/
// "push_message": {
// "transmission": "{
// заголовок: \"титул\",
// контент: \"контент\",
// полезная нагрузка: \"Пользовательские данные\"
// }"
// },
// Hbulidx версия больше, чем ## 3.4.18, Android больше не отображает панель уведомлений. Нужно создавать уведомления самостоятельно
plus.push.createMessage(messageContent, res.payload, {
title: messageTitle
});
// Тот, кто здесь onlaunch писать
// plus.push.setAutoNotification(true);
} else {
const type = res.type
//【APPОффлайн】收到информация,но без напоминания(Возникает при получении нескольких Оффлайнинформациячас,Только у одного есть напоминание,但其他из没有提醒)
//【APPонлайн】收到информация,Системные сообщения не будут срабатывать, и необходимо создать локальные сообщения.,Но невозможно воссоздать
// Необходимо добавить проверку msg.type, чтобы удалить бесконечный цикл.
if (res.aps == null && type == "receive") {
//Создаем локальное сообщение. Отправленное локальное сообщение также будет получено методом приема, но атрибут type отсутствует, а значение aps равно нулю.
plus.push.createMessage(messageContent, res.payload, {
title: messageTitle
});
}
}
});
},
// Цикл для получения информации о клиенте до тех пор, пока она не будет получена.
getClientInfoLoop() {
plus.push.getClientInfoAsync(info => {
// Если информация не существует или информация существует, а cid не существует, получите cid еще раз.
if (!info || !info.clientid) {
console.log("cid пуст =======================================" );
let infoTimer = null;
infoTimer = setInterval(function() {
if (cid) {
clearInterval(infoTimer); //Очистить таймер
uni.showModal({
content: cid
})
uni.setStorageSync('cid', cid);
uniPushObj.cid = cid
}
}, 50);
} else if (info && info.clientid) {
let cid = info.clientid;
uni.setStorageSync('cid', cid);
uniPushObj.cid = cid
}
}, function(e) {
console.log('Failed', JSON.stringify(e));
let pinf = plus.push.getClientInfo();
let cid = pinf.clientid; //Идентификатор клиента
if (cid) {
uni.setStorageSync('cid', cid);
uniPushObj.cid = cid
}
})
},
/**
* Отправьте cid в фоновый режим и привяжите псевдоним
*/
passCid() {
pushEscalation({
"appid": uniPushObj.AppID,
"cid": uniPushObj.cid
}).then(response => {
if (response.Code == 0) {
console.log('----------> cid Привязка псевдонима успешно', response);
}
})
},
}
export default {
systemInfo: {}, // Информация о системном устройстве
manifestInfo: "" || uni.getStorageSync("widgetInfo"), // manifest.json Информация о приложении
}
<script>
import phoneInfo from '@/common/js/phone-info.js';
import uniPushListener from '@/common/js/unipush.js';
export default {
onLaunch: function() {
uniPushListener.getInfo();
// #ifdef APP-PLUS
plus.screen.lockOrientation('portrait-primary'); //Блокировка ориентации экрана
uni.setStorageSync('cancelUpdate', 'false'); // Заходите в приложение Сбросить всплывающее окно обновления
// Получить приложение Текущий номер версии
if (Object.keys(uni.getStorageSync('widgetInfo')).length == 0) {
plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {
phoneInfo.manifestInfo = widgetInfo;
uni.setStorageSync('widgetInfo', widgetInfo);
});
}
uniPushListener.getClientInfoLoop(); // Цикл для получения cid
plus.runtime.setBadgeNumber(0); // Очистить значок
uniPushListener.pushListener(); // Отслеживать информацию в панели уведомлений
//#endif
}
};
</script>