Microsoft WNS 前端发起推送—Part2

本文介绍如何在Unity导出的IL2CPP项目中实现客户端主动发起的定时推送消息功能,无需后端支持。通过C++/Cx代码示例展示了如何设置、显示及取消本地消息,适用于每两小时等周期性推送场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:客户端主动发起的推送消息,不需要后端。(例如每2小时推送一些内容)
我的项目是Unity 导出的IL2CPP工程,代码是C++/Cx。
如果导出是C#的工程的可以直接参考官方文档。

    void MainPage::ShowLocalMsg(String^ message) {
		std::vector<std::wstring> Result = Instance->Split(message->Data(), '$');
		String^ Id = ref new String(Result.at(0).c_str());
		String^ Second_Str = ref new String(Result.at(1).c_str());
		int Second = to_int(Second_Str);
		String^ Xml = ref new String(Result.at(2).c_str());
	
		if (!CancelLocalMsg(Id, Second)) 
		{
			XmlDocument^ toastXml = ref new XmlDocument();
			toastXml->LoadXml(Xml);
	
			auto calendar = ref new Windows::Globalization::Calendar();
			calendar->SetToNow();
			calendar->AddSeconds(Second);
	
			auto toast = ref new ScheduledToastNotification(toastXml, calendar->GetDateTime());
			toast->Id = Id;
			ToastNotificationManager::CreateToastNotifier()->AddToSchedule(toast);
		}
	}
	
	void MainPage::ClearLocalMsg() 
	{
		auto toast = ToastNotificationManager::CreateToastNotifier();
		auto list = toast->GetScheduledToastNotifications();
		for (int i = 0; i < list->Size; i++)
		{
			toast->RemoveFromSchedule(list->GetAt(i));
		}
	}
	
	bool MainPage::CancelLocalMsg(String^ Id,int second) {
		auto toast = ToastNotificationManager::CreateToastNotifier();
		auto list = toast->GetScheduledToastNotifications();
		for (int i = 0; i < list->Size; i++)
		{
			if (list->GetAt(i)->Id == Id) {
				toast->RemoveFromSchedule(list->GetAt(i));
			}
		}
		if (second > 0) 
		{
			return false;
		}
		else 
		{
			return true;
		}
	}
std::vector<std::wstring> MainPage::Split(const std::wstring &text, char sep) 
{
	std::vector<std::wstring> tokens;
	std::size_t start = 0, end = 0;
	while ((end = text.find(sep, start)) != std::wstring::npos) {
		if (end != start) {
			tokens.push_back(text.substr(start, end - start));
		}
		start = end + 1;
	}
	if (end != start) {
		tokens.push_back(text.substr(start));
	}
	return tokens;
}

int MainPage::to_int(Platform::String^ platformString)
{
	return _wtoi(platformString->Data());	
}

#2.后端主动推送—Part1
https://blog.csdn.net/blog_lee/article/details/76274697

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值