2015-08-28 82 views
1

我很难找到有用的东西,或者我没有正确理解,所以让我们从头开始。当我收到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收到推送通知时关闭?当应用程序关闭并且出现横幅通知(我想要声音)时没有声音,当应用程序打开并且出现通知时(只是振动,很奇怪),没有声音。

任何帮助将不胜感激。

谢谢

+0

您确定手机未处于静音模式吗? – efimovdk

+0

您是否在设备设置中检查了推送通知的设置? – anhtu

+0

是的,手机没有处于静音模式,并且是,按下了推送通知设置中的声音选项。 “/ – Creagen

回答

1

我之前没有做过,但在解析搜索我得到了一些解决方案,尝试这可能是帮助你

改变这一行

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

其他尝试一次声音 - >默认,如果它的工作检查那个声音文件 –

1
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" 
} 
1

我已通过PHP代码发送Apple推送通知。

$body['aps'] = array(
'alert' => 'Hi hello message......', 
'sound' => 'Bell.caf', 
'badge' => '1', 
); 

可能这会帮助你。

相关问题