我正在開發需要推送通知的應用程序。 我按照這個tutorial來實現推送通知與PHP。 所以我使用生產證書。 這是applicationDelegate代碼:推送通知不起作用
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
const unsigned* tokenBytes = [deviceToken bytes];
NSString* tok = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
NSLog([NSString stringWithFormat:@"token 1 = %@",tok]);
[[NSUserDefaults standardUserDefaults] setObject:tok forKey:@"token"];
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSLog(@"Received notification: %@", userInfo);
}
,這是服務器端的PHP頁面:當我啓動的PHP頁面
<?php
//$token = $_GET['t'];
$token = "xxxxxxxxxxx....xxxxxx";
$who =$_GET['c'];
$notification = $_GET['n'];
$message = 'Hello';
$badge = 3;
$sound = 'default';
$payload = array();
$payload['aps'] = array('alert' => $message, 'badge' => intval($badge), 'sound' => $sound);
$payload = json_encode($payload);
$apns_url = NULL;
$apns_cert = NULL;
$apns_port = 2195;
$apns_url = 'gateway.push.apple.com';
$apns_cert = 'cert-prod.pem';
$stream_context = stream_context_create();
stream_context_set_option($stream_context, 'ssl', 'local_cert', $apns_cert);
$apns = stream_socket_client('ssl://' . $apns_url . ':' . $apns_port, $error, $error_string, 2, STREAM_CLIENT_CONNECT, $stream_context);
$device_tokens = array();
$device_tokens[0] = $token;
foreach($device_tokens as $key=>$device_token)
{
$apns_message = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device_token)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apns_message);
}
@socket_close($apns);
@fclose($apns);
?>
沒有發生..爲什麼?誰能幫我?
這樣的aÂÑ5ΔC≤¸u令牌..是正確的? – JackTurky 2011-12-30 13:31:49
添加UbQNâo-ù€xxxxxaÂÑ5ΔC≤¸u到PHP代碼沒有任何事情發生:( – JackTurky 2011-12-30 13:33:21
不看起來很好嘗試:NSString *標記= [[NSString分配] initWithBytes:[deviceToken字節]長度:deviceToken.length編碼:NSASCIIStringEncoding] ; – CarlJ 2011-12-30 13:45:47