根据收到的某些通知状态更改 Xamarin 应用程序的应用程序图标的可行性

Posted

技术标签:

【中文标题】根据收到的某些通知状态更改 Xamarin 应用程序的应用程序图标的可行性【英文标题】:How feasible it is to change App icon of a Xamarin application based on certain notification statuses that it receives 【发布时间】:2017-11-18 19:25:33 【问题描述】:

我想知道是否有任何方法可以帮助根据使用 xamarin 收到的通知状态更改应用程序启动器图标。

【问题讨论】:

【参考方案1】:

是的,您现在可以在两个平台上动态更改“应用程序图标”,但在 ios 上,您只能根据语言偏好更改“应用程序名称”!

iOS

这里是change app icon on iOS using Xamarin的方法:

if (UIApplication.SharedApplication.SupportsAlternateIcons)
    await UIApplication.SharedApplication.SetAlternateIconNameAsync(iconName);

安卓

可以通过在 androidManifest 中添加与您的活动相同的别名来更改 Android 应用图标,然后只需切换应用使用的别名as shown here:

<activity android:name=".MainActivity">
    <intent-filter> 
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>  
</activity>
<activity-alias 
  android:name=".MainActivityAlias" 
  android:roundIcon="@drawable/ic_launcher_p_foreground"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:enabled="false" 
  android:targetActivity=".MainActivity">  
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>  
</activity-alias>

然后在您想更改图标时运行此代码:

PackageManager.SetComponentEnabledSetting(
                new ComponentName(this, "bundleId.MainActivityAlias"),
                ComponentEnabledState.Enabled,
                ComponentEnableOption.DontKillApp);
PackageManager.SetComponentEnabledSetting(
                new ComponentName(this, "bundleId.MainActivity"),
                ComponentEnabledState.Disabled,
                ComponentEnableOption.DontKillApp);

您可以使用我在上面分享的 iOS 文章中显示的相同概念的依赖注入,以便从您的 Xamarin 表单代码中更改 android 图标

【讨论】:

【参考方案2】:

你不能,至少在 iOS 中不能,App Icon 是在 Info.plist 中定义的,它是应用程序不可写的,它是由开发人员捆绑在一起的调用 - 请参阅https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-SW10

在 Android 中没有官方的方式,虽然有一些 hack(不是 Xamarin 特定的),但您的里程可能因设备而异 - 请参阅 How to change an application icon programmatically in Android?

【讨论】:

不正确,您现在可以通过编程方式更改 iOS 图标:***.com/questions/43233675/…

以上是关于根据收到的某些通知状态更改 Xamarin 应用程序的应用程序图标的可行性的主要内容,如果未能解决你的问题,请参考以下文章

使用 xamarin 表单在前台未收到 FCM 通知

关闭应用程序时未收到 Xamarin Forms Android 推送通知

使用 Xamarin.Forms 作为背景

当另一个进程对文本文件进行更改时,C# 会收到通知

Toast 通知在 Xamarin UWP Windows 应用程序中不起作用

收到方向更改通知时状态栏方向错误