我需要在 Delphi 中构建一个提供程序服务器,以通过 APNS 将推送通知消息发送到我的 iPhone 应用程序。
我读过这可以通过 Indy 组件来实现。还需要安装苹果提供的 SSL 证书(.p12)。
我正在寻找一些指针以在 Delphi 中开始使用它。什么是一个好的库可以使用,有没有人知道任何示例代码来做这样的事情?
以下是Ruby & PHP、C#和JAVA的示例
我需要在 Delphi 中构建一个提供程序服务器,以通过 APNS 将推送通知消息发送到我的 iPhone 应用程序。
我读过这可以通过 Indy 组件来实现。还需要安装苹果提供的 SSL 证书(.p12)。
我正在寻找一些指针以在 Delphi 中开始使用它。什么是一个好的库可以使用,有没有人知道任何示例代码来做这样的事情?
以下是Ruby & PHP、C#和JAVA的示例
好的,我按如下方式进行管理:在您的表单上
添加一个 indyTidTCPClient
并TIdSSLIOHandlerSocket
链接它们。TIdSSLIOHandlerSocket
将、 setCertFile
和中的 SSL 选项设置KeyFile
为适当的 .pem 文件。将方法设置为sslvSSLv23
并将模式设置为sslmClient
。
在IOHandler
'OnGetPassword
事件中设置您的密钥密码。
有用的网址:http: //developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html http://www.raywenderlich.com/3443/apple-push-notification-services -tutorial-part-12
在编码方面:
Nb HexData 是 iPhone App 发送的 ID
function SendNotification(HexData: String; Count: Integer): Boolean;
var
p_DataSize,
I: Integer;
p_payllen: Byte;
p_json : String;
p_sndmsg : String;
begin
// Delphi 6 so needed to create JSON by hand<br>
p_json := '{"aps":{';
if (Count > 0) then
begin
p_json := p_json + '"alert":"You Have ' + IntToStr(Count);
if (count = 1) then
p_json := p_json + ' Reminder'
else<br>
p_json := p_json + ' Reminders';
p_json := p_json + '","sound": "default",';
end;
p_json := p_json + '"badge":' + inttostr(Count) + '}}';
p_payllen := length(p_json);
// Hard code the first part of message as it never changes
p_sndmsg := chr(0) + chr(0) + chr(32);
// Convert hex string to binary data
p_DataSize := Length(HexData) div 2;
for I := 0 to p_DataSize-1 do
p_sndmsg := p_sndmsg + char(Byte(StrToInt('$' + Copy(HexData, (I*2)+1,
2))));
//Now need to add length of json string and string itself
p_sndmsg := p_sndmsg + chr(0) + Char(p_payllen) + p_json;
try
// According to Apple can't connect/disconnect for each message so leave open for later
if (not PushClient.Connected) then
PushClient.Connect;
PushClient.IOHandler.Send(p_sndmsg[1], length(p_sndmsg));
except
on e : exception do
Log_Error(e.message);
end;
end;
你可以尝试像 Rogier 所说的那样移植 java/php 或 ruby 代码。同时看看他的http://www.pushwoosh.com/一些类似于http://urbanairship.com/的东西。