c 相当于 php apns 代码

Posted

技术标签:

【中文标题】c 相当于 php apns 代码【英文标题】:c equivalent of php apns code 【发布时间】:2010-09-23 14:00:22 【问题描述】:

我正在编写一个 .c apns(苹果推送通知服务器)应用程序, 我让程序的其余部分正常工作,即连接到建立 ssl 的服务器、对消息进行 json 编码等。 但是,我被困在将令牌转换为十六进制字符串部分的部分。 示例值 $deviceToken 是“4DBCD414F624842E581972E65D2DAA4B96279B209BD0CE10AB12E52AEA48A670” $apnsMessage 是 ""aps":"alert":"testing","badge":1,"sound":"elephant.aiff""

这是一个 php sn-p,它现在可以完成这项工作。

$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($message)) . $message;
fwrite($this->apnsConnection, $apnsMessage);

任何帮助将不胜感激。 谢谢 彼得

【问题讨论】:

我不太明白这个问题。您是否拥有二进制格式的令牌并想使用 C 将其转换为 ascii 字符串? 【参考方案1】:

chr PHP 中的函数接受一个整数并返回一个带有一个字符的字符串,该字符是输入的 ASCII 字符等价物。示例 chr(48) 将返回 "0"。在 C 中,您可以使用 snprintf 来做到这一点:

int val = 30;
char str[2];
snprintf(str,2,"%c",val);

. 在 PHP 中是字符串连接,在 C 中你可以使用 strcatstrcpy 函数来实现。示例:

$msg = "a" . "b";

在 C 中是:

char msg[MAX];
strcpy(msg,"a");
strcat(msg,"b");

strlen 在 C 和 PHP 中工作 same :)。它接受一个字符串并返回它的长度。

没有直接函数可以完成str_replace 的工作。您必须运行测试每个字符的字符串。

示例:模拟str_replace('a','b',$str)

for(i=0;str[i];i++) 
 if(str[i] == 'a')  
  str[i] = b;
 

【讨论】:

感谢您的快速回复,我将尝试对此进行测试。 pack('H*' php 命令有替代方案吗?

以上是关于c 相当于 php apns 代码的主要内容,如果未能解决你的问题,请参考以下文章

相同的服务器代码可以向 APNS 和 GCM 发送通知吗

苹果在php中使用APNS拒绝连接

带有 PHP 的 iOS 13 APNS

apns没有在php中连接

查询 APNs 反馈服务器的 PHP 技术

在 apns.php 中获取失败的设备令牌