根据收到的某些通知状态更改 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 Forms Android 推送通知