Xamarin.forms 使用Microsoft.AppCenter以Xamarin表单推送通知

Xamarin.forms 使用Microsoft.AppCenter以Xamarin表单推送通知,xamarin.forms,push-notification,firebase-cloud-messaging,deviceid,Xamarin.forms,Push Notification,Firebase Cloud Messaging,Deviceid,问:我正在Microsoft.AppCenter中使用XAMARIN表单。如何使用AppCenter API从后端向我的移动客户端(Android/IOS)发送推送通知来获取firebase设备ID 前端(要求) 1.沙马林型 2.Microsoft.AppCenter 3.Microsoft.AppCenter.Push 4.必须使用AppCenter获取FireBase设备ID。 5.AppCenter.GetInstallIdAsync()将不适用于我的后端。我需要FireBaseDevi

问:我正在Microsoft.AppCenter中使用XAMARIN表单。如何使用AppCenter API从后端向我的移动客户端(Android/IOS)发送推送通知来获取firebase设备ID

前端(要求) 1.沙马林型 2.Microsoft.AppCenter 3.Microsoft.AppCenter.Push 4.必须使用AppCenter获取FireBase设备ID。 5.AppCenter.GetInstallIdAsync()将不适用于我的后端。我需要FireBaseDeviceID 6.

后端(要求) 1.我必须用FireBase的POST请求打电话


我有一个后端服务器,需要将推送直接发送到firebase。不是通过AppCenter。我需要firebase的DeviceID,用于我要发送到的每个设备。我的应用程序可以推送到所有设备。但我还需要转到通过AppCenter注册的特定设备。这就是为什么我需要我的前端应用程序为推送获取FireBase设备id。

您无法通过使用AppCenter获取FireBase id。
您有两种解决方法:
1.跳过在应用程序中使用AppCenter进行推送。根据文档,您必须在支持的每个平台上实现与Firebase的交互。如果您选择此选项,我可以分享更多提示。
2.说服后端团队使用AppCenter API发送单个推送通知
我知道这些解决方案都与您的一个要求相矛盾。但你必须为你的项目只选择一个推送服务,AppCenter或Firebase,并坚持下去。就我个人而言,我投了Firebase的票,这是通过艰苦的方式学会的

已更新

大多数情况下,当切换到FCM时,他是你最好的朋友

在应用程序端:

设置Firebase客户端和

根据我的经验,有一些技巧:

安卓:
您必须在
FirebaseMessagingService
的子代中侦听Firebase InstanceID的更改,并将其存储以供以后使用。与AppCenter一样,它在您需要时不可用

我的活动具有
LaunchMode=LaunchMode.SingleTop
,我根据推送到达时的应用程序状态覆盖两种方法来处理推送:
void OnNewIntent(Intent Intent)
void OnPostCreate(Bundle savedInstanceState)
。这可能不是你的情况,因为我也处理无声推送。要检查intent是否包含来自Firebase的推送,请运行
intent?.GetStringExtra(“google.message_id”)!=空

iOS:
推送通知在iOS模拟器上不起作用,在模拟器上运行时,初始化步骤可能会使应用程序崩溃。我已经在csproj文件中的
\uuuuuuuiOS\uuuuuuiOS\uuuuu
DEBUG
下的
iPhoneSimulator
配置下创建了
\uuuuuiOS\uuuuiOS\uuuuuuuuiOS
常量。并在AppDelegate.cs中使用它,如下所示:

#if !__IOS_SIMULATOR__
    new FirebaseCloudMessagingInitializer().Init();
#endif
AppDelegate
提供两种方法来覆盖
void ReceivedRemoteNotification(UIApplication应用程序,NSDictionary用户信息)
void DidReceiveRemoteNotification(UIApplication应用程序,NSDictionary用户信息,操作完成处理程序)
。我在开始时使用了第一个,当它没有被调用时,我会面对边缘情况。因此,我不得不切换到覆盖后者。但不要盲目地遵循这个建议,检查什么最适合你的需要

另外,要小心,我不确定它是否已经修复,因为我必须处理它。 如果它仍然存在,请从应用修复程序

在后端端:

是所谓的遗留协议,请改用HTTP v1
邮递探索

如何


简而言之,如何

。Microsoft.AppCenter是否公开FireBase DevceID?是的,你怎么知道的。谢谢你,仅供参考。前端和后端团队都是我。我不想在后端使用AppCenter,因此#2不是一个选项。至于#1,我想我必须停止使用AppCenter进行推送。它只是让事情变得非常容易实现。我希望firebase方向相当容易实现。是的!!!你能给我一些关于切换的提示吗?我也开始用AppCenter实现推送,并对解决方案的简单性感到惊讶。但后来我面临着功能有限的问题,比如无法向Android发送“无声”推送。还有一个AppCenter的一次性问题,它严重影响了我所从事的业务。所以我不得不改用FCM。不幸的是,它没有AppCenter api那么明显。你能给我指出一个链接吗?该链接提供了使用Xamarin表单实现此功能的良好且清晰的步骤。-аcrmk_а您认为此视频有助于在Android设备的Xamarin表单应用程序中实现FCM通知吗?你认为这会引导我正确地做这件事吗?当你意识到你早就应该写那本该死的推送通知手册时的那种感觉:)我用一些链接和想法更新了我的答案,这些链接和想法在我查看推送通知的实现时随机出现在我的脑海中。希望对您有所帮助。