【发布时间】:2014-07-15 08:04:57
【问题描述】:
我想知道我是否可以创建一个服务来为 iOS 发送自定义的用户特定推送通知。
示例
@“嘿,%@,你好吗”,名字”
这可能吗?
【问题讨论】:
标签: ios objective-c node.js push-notification apple-push-notifications
我想知道我是否可以创建一个服务来为 iOS 发送自定义的用户特定推送通知。
@“嘿,%@,你好吗”,名字”
这可能吗?
【问题讨论】:
标签: ios objective-c node.js push-notification apple-push-notifications
除非我完全误解了你的需要,否则没有答案能满足你的需要。
这是来自APNS guide 的相关示例:
让我们考虑一个例子。提供者将以下字典指定为警报属性的值:
{ "aps" :
{
"alert" : {
"loc-key" : "GAME_PLAY_REQUEST_FORMAT",
"loc-args" : [ "Jenna", "Frank"]
}
}
}
当设备收到通知时,它会使用“GAME_PLAY_REQUEST_FORMAT”作为键,在 .lproj 目录下的 Localizable.strings 文件中查找当前语言的相关字符串值。假设当前本地化有一个 Localizable.strings 条目,例如:
"GAME_PLAY_REQUEST_FORMAT" = "%@ 和 %@ 邀请你玩大富翁";
设备会显示一条提示消息“Jenna 和 Frank 已邀请您玩 Monopoly”。
【讨论】:
当然。查看 APNS 编程指南,特别是有效负载,您可以在将其发送到用户设备之前在服务器上对其进行自定义。
另外请注意,如果您知道通知应该何时出现(而不是在动态时间),那么请查看不需要服务器后端的本地通知。
【讨论】:
您可以使用任何推送通知服务(如所列)或自己做。
在您的代码中,当您收到推送通知消息时:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"Received notification: %@", userInfo);
//here you should treat your received data
}
【讨论】:
对于使用 APNS 的 iOS 推送通知服务,有一些非常好的解决方案。无需自己实现。
如果您必须自己实现它,如果您想自己托管,请查看easyAPNS。
另一个很好的信息站点是 Ray Wenderlich 的站点,其中包含一个 2 部分教程:
或this,适用于 Node.js 的 Apple 推送通知模块。
【讨论】:
当然可以……
你需要为推送通知服务创建你自己的后端php文件,你可以从你的应用程序发送json数据到php文件中并使用$GET来实现你想要的数据,包括设备令牌、消息、徽章号码...请参考this
在您的视图控制器中
NSString *finalUrl =[NSString stringWithFormat:@"%@/pushService.php?device_token=%@&passphrase=%@&msg=%@",baseURL,device_token,passphrase,msg];
NSURL *url =[NSURL URLWithString:finalUrl];
NSData *jsonData = [NSData dataWithContentsOfURL:url];
if(jsonData != nil)
{
NSError *error = nil;
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSLog(@"result: %@", result);
}else
{
NSLog(@"connection error!");
}
pushService.php 文件
// Put your device token here (without spaces):
$deviceToken = $GET['device_token'];
// Put your private key's passphrase here
$passphrase = $GET['passphrase'];
// Put your alert message here:
$message = $GET['msg'];
$body['aps'] = array(
'alert' => $message,
'sound' => 'default',
'badge' => 5
);
【讨论】: