1

Azure Notification Hubを使用して、GCM/Firebase経由のプッシュ通知をXamarin Formsアプリケーションに配信しようとしています。XamarinアプリケーションをAzure通知ハブに登録しようとしたときに許可されていない例外

これは、我々はPCLでMobileServiceClientオブジェクトを作成するために使用するコードです:

public App() 
{ 
    mobileServiceClient = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient("https://namespace.servicebus.windows.net/NotificationHubName", new ModernHttpClient.NativeMessageHandler()); 
} 

私の知る限りでは、ドキュメントを理解できるように、我々が我々のように、カスタムHTTPハンドラを使用していないことは問題ではないはずですヘッダーなどを追加する必要はありません。通知が必要なだけで、Azureが認証を提供する必要はありません(Azure Active Directory B2Cを使用しています)。私は間違っているかもしれませんが、紛失した認証ヘッダが明らかにUnauthorized例外を引き起こす可能性があります。

これは、我々はAzureの通知ハブで私たちのアプリケーションを登録しようとするために使用するコードです:

public async void Register(Microsoft.WindowsAzure.MobileServices.Push push, IEnumerable<string> tags) 
{ 
    try 
    { 
     const string templateBodyGCM = "{\"data\":{\"message\":\"$(messageParam)\"}}"; 

     JObject templates = new JObject(); 
     templates["genericMessage"] = new JObject 
     { 
      {"body", templateBodyGCM} 
     }; 

     await push.RegisterAsync(RegistrationID, templates); 
     Log.Info("Push Installation Id", push.InstallationId.ToString()); 
    } 
    catch (Exception ex) 
    { 
     System.Diagnostics.Debug.WriteLine(ex.Message); 
     Debugger.Break(); 
    } 
} 

は残念ながら、例外がのawait push.RegisterAsync(RegistrationID、テンプレート)にスローされます。

{Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: The request could not be completed. (Unauthorized) 

GCMから登録IDを受け取り、GoogleのアプリケーションをAzureに登録しようとすると例外が発生し、プッシュ通知が届きます。

残念ながら、通知ハブに関するほとんどの例では、MobileServiceClientコンストラクタで2番目のパラメータを必要としない古いコードを使用しています。コードはこのリポジトリに基づいています:https://github.com/xamarin/xamarin-forms-samples/tree/master/WebServices/TodoAzurePush

ありがとうございました!

編集:テストデバイスで日付/時刻同期がオンになっています。これは他の開発者にも同様の問題が発生したようですが、ここで問題にはならないようです。

答えて

1

mobileServiceClient =新しいMicrosoft.WindowsAzure.MobileServices.MobileServiceClient( "https://namespace.servicebus.windows.net/NotificationHubName"、新しいModernHttpClient.NativeMessageHandler())。

あなたの説明とエラーによると、間違ったurlパラメータをMobileServiceClientオブジェクトに渡したことがわかりました。

Microsoft.WindowsAzure.MobileServices.MobileServiceClientのURLは、モバイルハブのURLではなく、モバイルアプリのURLです。以下のように

:あなたは携帯電話サービスポータルで通知ハブへの接続を設定している

mobileServiceClient = new Microsoft.WindowsAzure.MobileServices.MobileServiceClient("http://yourmobileappname.azurewebsites.net", new ModernHttpClient.NativeMessageHandler()); 

後、紺碧のモバイルSDKが自動で右MobileServiceClientに従ってプッシュオブジェクトを得ることができます。

私はあなたがすでに以下のようにお使いの携帯アプリで通知ハブに接続されているにもチェックすることができ示唆

enter image description here

+0

は、それを固定している、ありがとう - 私たちは、実際のためのアプリケーションサービスを持っていませんでしたAzureのモバイルアプリは、通知に行きたいと思っていたからです。私たちはこれを作成し、通知ハブと接続しました。通知はうまく届きました。再度、感謝します! – Philippe

+0

ありがとう、これはトリックでした。 –

関連する問題