我们正在开发一个Xamarin.Forms应用程序。在Android方面,我正在尝试为“android.intent.action.MY_PACKAGE_REPLACED”意图实现广播接收器,因此我们可以确保在更新后向GCM注册。我在其中发出通知以确保代码被命中,但它没有出现。有什么建议?代码如下。我在Android 6.0上从VS部署到我的三星Galaxy s5。
[BroadcastReceiver(Permission = "com.google.android.c2dm.permission.SEND", Exported = true)]
[IntentFilter(new string[] { Intent.ActionMyPackageReplaced }, DataPath = "<package name>", DataScheme = "package")]
public class GCMUpdateReceiver : GcmReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Bundle bundle = intent.Extras;
var notificationBuilder = new Notification.Builder(Application.Context)
.SetSmallIcon(Resource.Drawable.icon)
.SetContentTitle("OnReceive")
.SetContentText("ActionMyPackageReplaced")
.SetAutoCancel(true);
var notificationManager = (NotificationManager)Application.Context.GetSystemService(Context.NotificationService);
notificationManager.Notify(0, notificationBuilder.Build());
}
}
值得注意的是:在推送以确保项目已构建并且应该被视为更新之前,我已经完成了清理工作。
答案 0 :(得分:0)
我能够通过与我的其他广播接收器结合并寻找Intent.ActionPackageReplaced并检查以确保它是我的包被替换(而不是使用我从未收到过的ActionMyPackageReplaced)来解决这个问题。我的过滤器看起来像这样:
defaultbilling : true
defaultbilling : 'T'
defaultbilling : 'Yes'
defaultbilling : 1