在使用远程通知(来自Parse.com)的iOS应用中,我遇到以下问题: 虽然人们常常看到一个小小的音符告诉用户新的东西已经到来, 有时候沉默会更受欢迎。 知道应用程序正在按预期工作(在后台),而不是被告知每个事件都是我们想要的。
我该如何实现?
浏览网页我在Info.plist中读到了有关UIBackgroundModes的内容;但是当我尝试时,我没有得到我希望得到的结果。 我想我必须使用错误的工具或者错过它。 我还读到,Apple在审核应用时可能会对这些UIBackgroundModes的使用感到挑剔。 所以我可以尽可能避免找麻烦。
为了避免误解我把下面的代码放在了正常工作中;除了它“嘈杂”的事实。这意味着应用程序很乐意接收通知(这是有效的);但是用户会很高兴不知道它,这意味着不要一直在手机上看“ABC”。
在云端:
function pushNotification()
{
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo(‘fieldXZY’, 'ios');
Parse.Push.send({
where: pushQuery,
data: {
alert: “ABC"
}
}, {
success: function() {},
error: function(error) {
throw "Got an error " + error.code + " : " + error.message;
}
});
}
在应用内:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSString *notifString=[[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
if ([notifString isEqualToString:@“ABC"]) // The Notification has come.
[self doTheWorkForABCNotif];
}
答案 0 :(得分:3)
如果您不想接收通知的语音,请不要在aps中发送声音键。 aps 应与以下类似
aps = {
alert = "You have received a message";
badge = 3;
"content-available" : 1,// this key will allow to receive payload data even if app is in background
};
如果您不想显示提醒,请删除提醒。在自定义有效负载密钥中执行您想要的任务
答案 1 :(得分:0)
据我所知,没有api可以禁用本机代码中的推送通知声音。用户可以通过设置 - >通知 - >您的应用
禁用或启用它但是我想可以通过自定义声音规范来实现这一点。如果您不知道,请查看此apple doc。为此,请放置一个完全不包含声音的自定义声音文件。然后,如果您不希望用户收到声音,只需在将其发送到Apple推送通知服务之前在JSON有效负载中指定声音文件
答案 2 :(得分:0)
如果您想在应用程序中触发某些内容(例如后台获取,数据库中的数据清除,更新同步日期等),则无提示通知非常有用。要成功实现此目的,您将需要三件事
在您应用的Info.plist中,您需要添加 应用下载内容以响应推送通知 ,作为必需背景模式之一
在您的app委托中,您需要实现
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
// Do your stuff here
}
请注意附加
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
阻止回调
并实施
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
// Run your background fetch here
}
有效负载需要采用以下结构(除了任何自定义有效负载)
{
"aps" : {
"content-available" : 1,
"sound" : ""
}
"customPayloadKey":3,
"additionalPayload": {
"customKey":"customValue"
}
}
干杯!
答案 3 :(得分:0)
如果您正在使用Parse,他们可以选择通过JSON格式发送消息。
例如:{“message”:“Hello World”,“badge”:“1”,“sound”:“silent.mp3”}
您可以将音频文件添加到应用包中,该文件名为silent.mp3。这个音频文件可能只是一个空录音。
但是,这需要您将应用程序更新到商店,因为您必须将音频文件添加到您的软件包中。当您发送上述JSON时,它会尝试在您的文件中找到名为silent.mp3的音频文件应用程序捆绑并播放该文件作为通知声音。
由于音频文件只是一个静音录音,因此不会有任何通知声音。您可以在捆绑中添加各种音频文件,并在发送推送通知时通过Parse控制它。
我希望这为您提供了一种解决方法。