我已经尝试了很多教程来为我的应用程序发送推送通知服务。当我在设备上测试时,它可以工作。但是,如果我在App商店推出应用程序之后我在现场测试它并通过从商店下载安装在我的设备上,我运行php文件发送推送通知我没有得到它。这是代码我用于推送通知和tutorial我从中学习。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
return YES;
}
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@"Failed to get token, error: %@", error);
}
是否有任何教程可以教我实时使用它。我将我的php文件的环境从沙箱更改为live.Guidance please。
答案 0 :(得分:2)
我自己解决了这个问题。
不在Live上工作的原因是因为
(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
在此方法中,设备令牌未正确注册到我的php服务器数据库。以下代码将有助于在php服务器中注册设备令牌
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);
NSString* newToken = [deviceToken description];
newToken = [newToken stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
newToken = [newToken stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"%@",newToken);
NSString *urlString = [NSString stringWithFormat:@"http://sample.com/registerDevice.php?appId=xxx&deviceToken=%@",newToken];
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSData *urlData;
NSURLResponse *response;
urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:nil];
NSLog(@"data send");
}
答案 1 :(得分:1)
首先,我不认为使用开发推送通知证书(或临时证书)安装应用程序,获取deviceToken,安装应用商店应用程序以及使用以前的设备令牌发送推送通知将起作用。< / p>
此链接确认了它:iPhone APNS Device Tokens in sandbox vs. production
这可能解释了为什么您无法向您的应用程序发送推送通知。
此外,您需要将设备令牌发送到您的服务器,因为这是服务器了解所有设备令牌的唯一方法。
我建议您查看apple documentation。