Firebase 云消息传递 (FCM):当应用程序在 iOS 上处于后台模式时未收到通知
FCM 允许开发者将推送通知发送到iOS 和 Android 设备。当应用程序在后台时未收到通知时,就会出现此问题。
可能原因:
- 发送通知的 PHP 代码不正确。
- iOS 应用程序缺乏后台模式支持。
解决方案:
PHP 代码:
-
将以下字段添加到您的 PHP 负载中:
- 'content_available' =>; true(当 iOS 应用程序在后台时触发)
- 'priority' => '高'
- '通知'=> $data(将 $data 替换为您想要的通知数据)
- 将 $data 设置为包含具有自定义值的“message”和“body”键。
iOS 应用程序:
- 检查 .gcm 文件是否包含在您的 Xcode 项目中。
- 确保 AppDelegate 符合 GCMReceiverDelegate。
- 重写 applicationDidBecomeActive 和 applicationDidEnterBackground 方法分别(重新)连接和断开与 FCM 的连接。
- 使用 UIRemoteNotificationType 注册通知。
- 实现 application:didReceiveRemoteNotification: 方法来处理收到的通知,甚至当应用程序在后台时。
- 如果需要,请实现 application:didReceiveRemoteNotification:fetchCompletionHandler: 方法以进一步处理在后台收到的通知。
更新的 PHP 代码:
<code class="php"><?php $data = array( 'message' => 'Hello World!', 'body' => 'Hello World!' ); $post = array( 'registration_ids' => $ids, 'data' => $data, 'content_available' => true, 'priority' => 'high', 'notification' => $data ); // ... Remaining code</code>
更新的 iOS 应用程序:
<code class="objc">// AppDelegate.h @interface AppDelegate : UIResponder <uiapplicationdelegate gcmreceiverdelegate> // AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // ... // Register for remote notifications if (floor(NSFoundationVersionNumber) <p><strong>注意:</strong></p> <ul> <li>确保您已在 Apple 开发者门户中为您的应用启用推送通知。</li> <li>在 FCM 项目设置中添加推送通知证书。</li> </ul></uiapplicationdelegate></code>
以上是为什么 Firebase 云消息传递 (FCM) 通知在 iOS 上的后台模式下不保留?的详细内容。更多信息请关注PHP中文网其他相关文章!

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

tomakephpapplicationsfaster,关注台词:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,关注台词:1)启用opcodeCachingwithapCutoredUcescriptexecutiontime.2)实现databasequerycachingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandredececonnection.4 limitsclection.4.4

依赖注入(DI)通过显式传递依赖关系,显着提升了PHP代码的可测试性。 1)DI解耦类与具体实现,使测试和维护更灵活。 2)三种类型中,构造函数注入明确表达依赖,保持状态一致。 3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

databasequeryOptimizationinphpinvolVolVOLVESEVERSEVERSTRATEMIESOENHANCEPERANCE.1)SELECTONLYNLYNESSERSAYCOLUMNSTORMONTOUMTOUNSOUDSATATATATATATATATATATRANSFER.3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Dreamweaver CS6
视觉化网页开发工具

Atom编辑器mac版下载
最流行的的开源编辑器