当我收到Parse的推送通知时,如何播放声音?
问题描述:
我很难找到有用的东西,或者我没有正确理解,所以让我们从头开始。当我收到Parse的推送通知时,如何播放声音?
应用A被通知推送,以应用B,像这样:
NSDictionary *data = @{
@"alert" : @"Purchase Successful! 1 Remove Ads",
@"badge" : @"Increment",
@"sounds" : @"Bell.caf",
};
PFPush *push = [[PFPush alloc] init];
[push setChannels:@[ @"Mets" ]];
[push setData:data];
[push sendPushInBackground];
应用B接收到像这样的推送通知:
//
// ParseStarterProjectAppDelegate.m
//
// Copyright 2011-present Parse Inc. All rights reserved.
//
#import <Parse/Parse.h>
// If you want to use any of the UI components, uncomment this line
// #import <ParseUI/ParseUI.h>
// If you are using Facebook, uncomment this line
// #import <ParseFacebookUtils/PFFacebookUtils.h>
// If you want to use Crash Reporting - uncomment this line
// #import <ParseCrashReporting/ParseCrashReporting.h>
#import "ParseStarterProjectAppDelegate.h"
#import "ParseStarterProjectViewController.h"
@implementation ParseStarterProjectAppDelegate
#pragma mark -
#pragma mark UIApplicationDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Enable storing and querying data from Local Datastore. Remove this line if you don't want to
// use Local Datastore features or want to use cachePolicy.
[Parse enableLocalDatastore];
// ****************************************************************************
// Uncomment this line if you want to enable Crash Reporting
// [ParseCrashReporting enable];
//
// Uncomment and fill in with your Parse credentials:
[Parse setApplicationId:@"APPIDHERE" clientKey:@"CLIENTKEYHERE"];
//
// If you are using Facebook, uncomment and add your FacebookAppID to your bundle's plist as
// described here: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/
// [PFFacebookUtils initializeFacebook];
// ****************************************************************************
[PFUser enableAutomaticUser];
PFACL *defaultACL = [PFACL ACL];
// If you would like all objects to be private by default, remove this line.
[defaultACL setPublicReadAccess:YES];
[PFACL setDefaultACL:defaultACL withAccessForCurrentUser:YES];
// Override point for customization after application launch.
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
if (application.applicationState != UIApplicationStateBackground) {
// Track an app open here if we launch with a push, unless
// "content_available" was used to trigger a background push (introduced in iOS 7).
// In that case, we skip tracking here to avoid double counting the app-open.
BOOL preBackgroundPush = ![application respondsToSelector:@selector(backgroundRefreshStatus)];
BOOL oldPushHandlerOnly = ![self respondsToSelector:@selector(application:didReceiveRemoteNotification:fetchCompletionHandler:)];
BOOL noPushPayload = ![launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (preBackgroundPush || oldPushHandlerOnly || noPushPayload) {
[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];
}
}
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
UIUserNotificationTypeBadge |
UIUserNotificationTypeSound);
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
} else
#endif
{
[application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound)];
}
return YES;
}
#pragma mark Push Notifications
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
PFInstallation *currentInstallation = [PFInstallation currentInstallation];
[currentInstallation setDeviceTokenFromData:deviceToken];
[currentInstallation saveInBackground];
[PFPush subscribeToChannelInBackground:@"Mets" block:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"ParseStarterProject successfully subscribed to push notifications on the broadcast channel.");
} else {
NSLog(@"ParseStarterProject failed to subscribe to push notifications on the broadcast channel.");
}
}];
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
if (error.code == 3010) {
NSLog(@"Push notifications are not supported in the iOS Simulator.");
} else {
// show some alert or otherwise handle the failure to register.
NSLog(@"application:didFailToRegisterForRemoteNotificationsWithError: %@", error);
}
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
[PFPush handlePush:userInfo];
if (application.applicationState == UIApplicationStateInactive) {
[PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
}
}
///////////////////////////////////////////////////////////
// Uncomment this method if you want to use Push Notifications with Background App Refresh
///////////////////////////////////////////////////////////
//- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// if (application.applicationState == UIApplicationStateInactive) {
// [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
// }
//}
#pragma mark Facebook SDK Integration
///////////////////////////////////////////////////////////
// Uncomment this method if you are using Facebook
///////////////////////////////////////////////////////////
//- (BOOL)application:(UIApplication *)application
// openURL:(NSURL *)url
// sourceApplication:(NSString *)sourceApplication
// annotation:(id)annotation {
// return [PFFacebookUtils handleOpenURL:url];
//}
@end
现在怎么来的我没有听到任何声音去当应用程序B收到推送通知时关闭?当应用程序关闭并且出现横幅通知(我想要声音)时没有声音,当应用程序打开并且出现通知时(只是振动,很奇怪),没有声音。
任何帮助将不胜感激。
谢谢
答
我之前没有做过,但在解析搜索我得到了一些解决方案,尝试这可能是帮助你
改变这一行
NSDictionary *data = @{
@"alert" : @"Purchase Successful! 1 Remove Ads",
@"badge" : @"Increment",
@"sounds" : @"Bell.caf",
};
到
NSDictionary *data = @{
@"alert" : @"Purchase Successful! 1 Remove Ads",
@"badge" : @"Increment",
@"sound" : @"Bell.caf", --> the key Name is not sounds
};
参考link
+0
其他尝试一次声音 - >默认,如果它的工作检查那个声音文件 –
答
NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys:
@"This is an alert with a custom horn sound!", @"alert",
@"Increment", @"badge",
@"homerun.caf", @"sound",
@"5", @"score_REDSOX",
@"0", @"score_YANKEES",
@"4th", @"inning",
nil];
PFPush *push = [[PFPush alloc] init];
[push setChannels:[NSArray arrayWithObjects:@"REDSOX", @"YANKEES", nil]];
[push setPushToAndroid:false];
[push expireAfterTimeInterval:86400];
[push setData:data];
[push sendPushInBackground];
Push Notifications Web Console
{
"alert": "This is an alert with a custom horn sound!",
"badge": "Increment",
"sound": "homerun.caf",
"score_REDSOX": "5",
"score_YANKEES": "0",
"inning": "4th"
}
答
我已通过PHP代码发送Apple推送通知。
$body['aps'] = array(
'alert' => 'Hi hello message......',
'sound' => 'Bell.caf',
'badge' => '1',
);
可能这会帮助你。
您确定手机未处于静音模式吗? – efimovdk
您是否在设备设置中检查了推送通知的设置? – anhtu
是的,手机没有处于静音模式,并且是,按下了推送通知设置中的声音选项。 “/ – Creagen