2017-03-02 12 views
1

iOSで動作するプッシュ通知を受け取ることができないXamarinフォームアプリがあります。彼らはAndroidでうまくいっています。デバイスは、SDK v4.1.0を使用してUrban Airshipに正しく登録されています。私はChannelIdとデバイストークンを取得できます。私がDevチャンネルでプッシュアウトを送信すると、Androidデバイスは通知を受け取りますが、iOSデバイスは通知を受け取りません。 Urban Airshipでは、メッセージ全体がAndroid搭載端末と、これをテストした両方のiOS端末にメッセージが配信されたことが示されています。私は何か小さいものを欠いていると確信していますが、それが何であるか把握できません。以下はApp Delegateのソースです。私が見てきた例からかなりまっすぐです。XamarinフォームiOSデバイスはUrban Airshipからプッシュを受け取りません

using System; 
using System.Collections.Generic; 
using System.Linq; 

using Foundation; 
using UIKit; 
using UrbanAirship; 

namespace -----------.Mobile.iOS 
{ 
    [Register("AppDelegate")] 
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 
    { 
     public override bool FinishedLaunching(UIApplication app, NSDictionary options) 
     { 
      global::Xamarin.Forms.Forms.Init(); 

      UAConfig config = new UrbanAirship.UAConfig(); 
      config.DevelopmentAppKey = "----------------------"; 
      config.DevelopmentAppSecret = "----------------------"; 
      config.ProductionAppKey = "----------------------"; 
      config.ProductionAppSecret = "----------------------"; 

#if DEBUG 
      config.InProduction = false; 
#else 
      config.InProduction = true 
#endif 
      UAirship.TakeOff(config); 
      UAirship.Push.UserPushNotificationsEnabled = true; 
      UAirship.Push.ChannelTagRegistrationEnabled = true; 

      // Write the ChannelId for reference later. 

      Guid urbanAirshipChannelId; 
      UrbanAirshipData uaData = new UrbanAirshipData(); 
      if (Guid.TryParse(UAirship.Push.ChannelID, out urbanAirshipChannelId)) 
      { 
       uaData.UrbanAirshipChannelId = urbanAirshipChannelId; 
       uaData.UrbanAirshipDeviceType = Common.Utilities.Enumerations.eUrbanAirshipDeviceType.iOS; 
      } 
      UAirship.Push.PushNotificationDelegate = PushReceived(); 


      LoadApplication(new App(uaData)); 

      return base.FinishedLaunching(app, options); 
     } 

     private UAPushNotificationDelegate PushReceived() 
     { 
      UAPushNotificationDelegate result = new UAPushNotificationDelegate(); 

      return result; 
     } 



    } 
} 

ご意見やご提案をいただければ幸いです。しかしhttps://github.com/urbanairship/xamarin-component/issues/40

デバイスがプッシュを受けていないために発生しませんこと -

答えて

0

ラインUAirship.Push.PushNotificationDelegate = PushReceived(); は、彼らは、デリゲートへの強い参照を格納していない都市飛行船の代表者に問題があります。デフォルトでは、アプリがフォアグラウンドにある場合、プッシュ受信では何も起こりません。バックグラウンドでは、通知を送信します。 UAPushインスタンスのデフォルトのフォアグラウンド通知オプションをiOS 10に設定することでその動作を変更することができます。

まだプッシュを受けるのに苦労している場合は、Urban Airshipsのサポートに連絡するかgithubに問題を投稿します。完全なログが必要になります。

+0

ありがとうございました。質問があります。 iOSの予想される動作は次のとおりですか?アプリがフォアグラウンドを実行していてプッシュが受信されると、そのデバイスはユーザーに通知しませんが、通知は他の通知とともにリストされますか?また、これはUAPushインスタンスで変更できることに言及しました。 プッシュしようとしたときに通知リストを見ていて、何も見なかった。私は問題を投稿しなければならないかもしれないと思う。私はUAに連絡しましたが、お客様のサービスレベルにはサポートがありません。 – GX2TAP

+0

Appleはアプリがプッシュを処理し、iOS 10までの通知を一切送信しないと想定していました。今では、フォアグラウンドプレゼンテーションオプションを設定することができます。ここでデフォルト値を設定できます - http://docs.urbanairship.com/reference/libraries/ios/latest/Classes/UAPush.html#/c:objc(cs)UAPush(py)defaultPresentationOptions彼らはおそらくコミュニティフォーラムに投稿してもらえますが、かなり迅速に対応することができます。 – ralepinski

+0

ありがとうございます。私はそれを次のステップにします。フィードバックをお寄せいただきありがとうございます。 – GX2TAP

0

問題は、私がフォアグラウンドでアプリをテストしていて、iOSがアプリを実行しているという通知を表示していないということでした。私はそれをフォアグラウンドで動作させ、音を出すために次のものを追加しなければならなかった。

UAirship.Push.DefaultPresentationOptions = UserNotifications.UNNotificationPresentationOptions.Alert | UserNotifications.UNNotificationPresentationOptions.Sound; 
関連する問題