推送内容如果包含了emoji表情,需要做以下修改
1 mysql 要用5.5.3以上版本(如果不能升级,请用base64保存,推送时再转码)
2 将表和推送内容表字段修改成utf8mb4_unicode_ci编码格式(不需要改系统的my.cnf,也不需要重启mysql)
如果用了apnsphp来推送,可能依然会出现发送emoji表情变成?的问题:
请找到Message.php的getPayload方法,在convert转码判断上加上"false &&"禁止执行。因为这段代码会将部分emoji表情截断。
$sJSON = json_encode($this->_getPayload(), defined('JSON_UNESCAPED_UNICODE') ? JSON_UNESCAPED_UNICODE : 0); if (false && !defined('JSON_UNESCAPED_UNICODE') && function_exists('mb_convert_encoding')) { $sJSON = preg_replace_callback( '~\\\\u([0-9a-f]{4})~i', create_function('$aMatches', 'return mb_convert_encoding(pack("H*", $aMatches[1]), "UTF-8", "UTF-16");'), $sJSON); }
至此,就解决问题了。
后来,又发现一个问题:
在推送消息时,由于apns在ios8以下版本只支持256个bytes,因此限制了push的消息长度。在测试环境(php5.5)下可正确push的消息,在正式环境(php5.3)下push的消息被截断了。经过代码检查,发现在push之前都会做json_encode,就是上述代码的第一行,而如果是php5.4以下版本,defined('JSON_UNESCAPED_UNICODE') 等于 false。因此,会执行下面的if 判断,为了支持emoji表情,忽略了判断执行,导致生成的消息长度在json_encode之后查过256个bytes,因此有些消息之前可以发出去的,现在发不出去了。为了彻底解决emoji和消息截断这个问题,还是将php升级到5.4以上版本吧。
同时建议将 超过长度的消息自动截断功能关闭:
protected $_bAutoAdjustLongPayload = false; /**

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Notepad++7.3.1
Easy-to-use and free code editor

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Chinese version
Chinese version, very easy to use

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.
