2017-03-10 104 views
7

我正在接收推送通知的聊天應用程序。我想提供iOS中用來顯示推送通知的圖像/圖標,我可以在哪裏指定Xcode中的圖像/圖標?推送通知的圖標?

+1

你不能AFAIK。它將使用您的應用程序的圖標。你可以在這裏閱讀更多:https://developer.apple.com/ios/human-interface-guidelines/features/notifications/ – Losiowaty

+1

當然你可以通過使用Images.xcassets。 只需將你想要的圖像插入字段「iPhone通知」/「iPad通知」 –

+1

你應該看看這個:http://stackoverflow.com/questions/37839171/how-to-display-image-in- ios-push-notification – Milander

回答

0

要做到這一點,首先你需要到您的Info.plist文件和圖標文件時

<key>CFBundleIcons</key> 
    <dict> 
     <key>CFBundleAlternateIcon</key> 
     <dict> 
      <key>first_icon</key> 
      <dict> 
       <key>CFBundleIconFile</key> 
       <array> 
        <string>first_icon.png</string> 
       </array> 
      </dict> 
      <key>second_icon</key> 
      <dict> 
       <key>CFBundleIconFile</key> 
       <array> 
        <string>second_icon.png</string> 
       </array> 
      </dict> 
     </dict> 
     <key>CFBundlePrimaryIcon</key> 
     <dict> 
      <key>CFBundleIconFiles</key> 
      <array> 
       <string></string> 
      </array> 
      <key>UIPrerenderedIcon</key> 
      <false/> 
     </dict> 
     <key>UINewsstandIcon</key> 
     <dict> 
      <key>CFBundleIconFiles</key> 
      <array> 
       <string></string> 
      </array> 
      <key>UINewsstandBindingType</key> 
      <string>UINewsstandBindingTypeMagazine</string> 
      <key>UINewsstandBindingEdge</key> 
      <string>UINewsstandBindingEdgeLeft</string> 
     </dict> 
    </dict> 

現在,你需要在你的AppDelegate文件中配置設置中添加一些屬性

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ 

     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 

     NSDictionary *notificationData = [[PushNotificationManager pushManager] getCustomPushDataAsNSDict:userInfo]; 
     NSString * notiIcon = [notificationData objectForKey:@"newIcon"]; 
     if([notiIcon isEqualToString:@"nil"]) 
      notiIcon = nil; 

     NSLog(@"icon is: %@", notiIcon); 

     [[UIApplication sharedApplication] setAlternateIconName:notiIcon completionHandler:^(NSError * _Nullable error) { 
      NSLog(@"Set icon error = %@", error.localizedDescription); 
     }]; 
     }); 

現在從任何儀表板你發送通知到應用程序goto,並會有和選項名稱Action或類似的東西send Custom data發送key-value對我們正在使用的密鑰'newIcon'所以發送它像這樣

{"newIcon":"first_icon"} 

現在當你發送帶有iconName的通知將出現。

這將工作..

+0

@Aashish Nagar我改變了我的答案我以前的答案被刪除,因爲一些版權問題現在檢查這一個 –