搜尋
首頁php教程php手册ios开发:用PHP实现IOS推送

 ios推送消息是个非常有用的功能,许多应用程序都具备了这个功能,成为实时应用的数据流核心.那么我们怎么用php为ios做推送服务呢?下面本文章将为您进行详细讲解。

ios消息推送机制可以参考ios消息推送机制实现与探讨。

首先,需要一个pem的证书,该证书需要与开发时签名用的一致。 具体生成pem证书方法如下:

1. 登录 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action ) 然后点击 App IDs
2. 创建一个 Apple ID 。通配符 ID 不能用于推送通知服务。如,  com.itotem.iphone
3. 点击Apple ID旁的“Configure”,根据“向导” 的步骤生成一个签名上传,然后下载生成的许可证。
4. 双击.cer文件将你的 aps_developer_identity.cer 导入Keychain中。
5. 在Mac上启动 Keychain助手,然后在login keychain中选择 Certificates分类。看到一个可扩展选项“Apple Development Push Services”
6. 扩展此选项然后右击“Apple Development Push Services” > Export “Apple Development Push Services ID123”。保存为 apns-dev-cert.p12 文件。
7. 扩展“Apple Development Push Services” 对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件。
8. 通过终端命令将这些文件转换为PEM格式:openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
9. 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

 

PHP代码如下:

 

  1. $deviceToken = $_POST['token']; //取得Token
  2. $body = array(“aps” => array(“alert” => ‘message’, “badge” => 2, “sound”=>’default’));  //推送方式,包含内容和声音
  3. $ctx = stream_context_create();
  4. //如果在Windows的服务器上,寻找pem路径会有问题,路径修改成这样的方法:
  5. //$pem = dirname(__FILE__) . ‘/’ . ‘apns-dev.pem’;
  6. //linux 的服务器直接写pem的路径即可
  7. stream_context_set_option($ctx, “ssl”, “local_cert”, “apns-dev.pem”);
  8. $pass = ”123123“;
  9. stream_context_set_option($ctx, ‘ssl’, ‘passphrase’, $pass);
  10. //此处有两个服务器需要选择,如果是开发测试用,选择第二名sandbox的服务器并使用Dev的pem证书,如果是正是发布,使用Product的pem并选用正式的服务器
  11. $fp = stream_socket_client(“ssl://gateway.push.apple.com:2195“, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
  12. $fp = stream_socket_client(“ssl://gateway.sandbox.push.apple.com:2195″, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
  13. if (!$fp) {
  14. print “Failed to connect $err $errstrn”;
  15. return;
  16. }
  17. print “Connection OK\n”;
  18. $payload = json_encode($body);
  19. $msg = chr(0) . pack(“n”,32) . pack(“H*”, str_replace(‘ ‘, ”, $deviceToken)) . pack(“n”,strlen($payload)) . $payload;
  20. print “sending message :” . $payload . “\n”;
  21. fwrite($fp, $msg);
  22. fclose($fp);
  23. ?>

 

然后,

到这里证书已经准备完毕,接下来,我们在xcode中新建一个测试工程,注意设置工程的Bundle Identifier必须与上面建的APP ID 里的相同


在didFinishLaunchingWithOptions 中加入一下代码

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

[self.window makeKeyAndVisible];

 [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge UIRemoteNotificationTypeSound  UIRemoteNotificationTypeAlert];

    return YES;

}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken {

    NSLog(@"regisger success:%@", pToken);

}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{

    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"推送通知" message:@"信息" delegate:selfcancelButtonTitle:@"Cancel" otherButtonTitles:nil, nil];

    [alert show];

    [alert release];

}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {

    NSLog(@"Regist fail%@",error); 

}

接下来我们访问http://localhost/push/push.php

ios设备就会接收到一条推送消息了

另外去除标记的方法为,在viewDidApper中加入

 

int badge = [UIApplication sharedApplication].applicationIconBadgeNumber;

    if(badge > 0)

    {

        badge--;

        [UIApplication sharedApplication].applicationIconBadgeNumber = badge;

    }



陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用