<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MIPush on 冯威的博客</title><link>https://fwhyy.com/tags/mipush/</link><description>Recent content in MIPush on 冯威的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 02 Sep 2017 09:35:44 +0800</lastBuildDate><atom:link href="https://fwhyy.com/tags/mipush/atom.xml" rel="self" type="application/rss+xml"/><item><title>C#中实现小米推送</title><link>https://fwhyy.com/2017/09/mi-push-to-csharp/</link><pubDate>Sat, 02 Sep 2017 09:35:44 +0800</pubDate><guid>https://fwhyy.com/2017/09/mi-push-to-csharp/</guid><description>&lt;p&gt;移动端的消息推送有很多互联网产品可以用，例如：极光、个推、小米推送等。对于安卓手机，推送需要做各种适配，开始我们使用的是极光，发现在小米手机上，当App退出到后台，就经常不能收到消息，所以决定将小米推送集成到App中。&lt;/p&gt;
&lt;p&gt;遗憾的是小米推送官方并不支持C#，所以需要很对Java版本的实现用IKVM来做一些转化。转换后在Net程序中一共需要引用7个Dll文件，如下图：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201300725027.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;相关Dll文件和示例代码已经放在Github上了&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[https://github.com/oec2003/MIPushCSharpSample](https://github.com/oec2003/MIPushCSharpSample)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="服务器证书问题解决"&gt;服务器证书问题解决&lt;/h2&gt;
&lt;p&gt;在测试阶段，推送一直没什么问题，当部署到客户服务器上后，就推送失败，错误日志如下图：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201300725876.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;从错误信息可以得知是在验证证书时出的问题，网上查到很多都是Java版本的解决方式，思路就是忽略SSL的验证，找了下C#的相关代码，如下图：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201300725838.webp" alt="" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;上面代码加上后，发现推送就正常了。上面红框代码如下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) =&amp;gt; true;
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>