「Winrtライブラリを使用して通知センターにアクセスする。(通知センターの通知を取得)」の版間の差分
ナビゲーションに移動
検索に移動
Sufee Admin (トーク | 投稿記録) ページの作成:「== 内容 == 通知取得 ==コード==」 |
Sufee Admin (トーク | 投稿記録) |
||
(同じ利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
== 内容 == | == 内容 == | ||
通知取得 | 通知取得 | ||
※設定からアプリケーションによる通知を許可するをONにすること | |||
==コード== | ==コード== | ||
<syntaxhighlight lang="python3"> | |||
from winrt.windows.ui.notifications.management import UserNotificationListener, UserNotificationListenerAccessStatus | |||
from winrt.windows.ui.notifications import NotificationKinds, KnownNotificationBindings | |||
from winrt.windows.foundation.metadata import ApiInformation | |||
import asyncio | |||
async def maind(): | |||
if not(ApiInformation.is_type_present("Windows.UI.Notifications.Management.UserNotificationListener")): | |||
print("このデバイスではこの機能は使用できません") | |||
return | |||
listener = UserNotificationListener.get_current() | |||
accessStatus = await listener.request_access_async() | |||
if(accessStatus != UserNotificationListenerAccessStatus.ALLOWED): | |||
print("設定からアプリケーションによる通知を許可するをONにすること") | |||
notifications = await listener.get_notifications_async(NotificationKinds.TOAST) | |||
for i in notifications: | |||
text_sequence = i.notification.visual.get_binding( | |||
KnownNotificationBindings.get_toast_generic() | |||
).get_text_elements() | |||
it = iter(text_sequence) | |||
print(f"Notification title({i.id}): ", it.current.text) | |||
while True: | |||
next(it, None) | |||
if it.has_current: | |||
print(it.current.text) | |||
else: | |||
break | |||
loop = asyncio.get_event_loop() | |||
loop.run_until_complete(maind()) | |||
</syntaxhighlight> |
2022年11月15日 (火) 18:43時点における最新版
内容
通知取得
※設定からアプリケーションによる通知を許可するをONにすること
コード
from winrt.windows.ui.notifications.management import UserNotificationListener, UserNotificationListenerAccessStatus
from winrt.windows.ui.notifications import NotificationKinds, KnownNotificationBindings
from winrt.windows.foundation.metadata import ApiInformation
import asyncio
async def maind():
if not(ApiInformation.is_type_present("Windows.UI.Notifications.Management.UserNotificationListener")):
print("このデバイスではこの機能は使用できません")
return
listener = UserNotificationListener.get_current()
accessStatus = await listener.request_access_async()
if(accessStatus != UserNotificationListenerAccessStatus.ALLOWED):
print("設定からアプリケーションによる通知を許可するをONにすること")
notifications = await listener.get_notifications_async(NotificationKinds.TOAST)
for i in notifications:
text_sequence = i.notification.visual.get_binding(
KnownNotificationBindings.get_toast_generic()
).get_text_elements()
it = iter(text_sequence)
print(f"Notification title({i.id}): ", it.current.text)
while True:
next(it, None)
if it.has_current:
print(it.current.text)
else:
break
loop = asyncio.get_event_loop()
loop.run_until_complete(maind())