我們使用我們的生產APNS證書設置了Azure通知集線器,並在生產模式下配置了APNS。 我們將我們的測試設備(使用TestFlight/Production構建和證書)註冊到APNS,然後使用標籤dealer-1
註冊到ANH。當我們直接使用APNS時,我們可以使用我們的生產證書和註冊設備ID發送通知,但是當我們使用'測試發送'時,我們會向1臺設備(或我們註冊的許多設備)發送'成功發送'。通知未收到。如果我們再次運行'測試發送',則發送0個設備。通知集線器設備在推送(APNS)後消失
在日誌中,我們看到每個設備的「APNS錯誤」,每次發送測試。我看不出有什麼辦法可以查看錯誤的實際情況,所以這是絕對無用的指標。
我已經完成了所有故障排除步驟,並確認了許多次在「生產」中設置了所有內容。
在審查其他問題,答案一直沿着線:
- ..註冊一個沙箱證書,然後將其更改爲生產。不幸的是,我們從頭開始創建了這個中心作爲生產,試圖解決這個潛在問題。
- ..在生產證書上註冊沙箱設備(以及令牌)。不幸的是,我已經嚴密地控制了這一點,並確保我們只針對ANH註冊TestFlight構建(因此生產)。
- ..上傳錯誤的證書。如上所述,我已通過推送通知測試人員確認證書是正確的(指紋確認,重新上傳等),並可通過生產APNS端點發送到設備。
資源名稱是:八技術/反應推通知業務的集線器
在應用內的註冊過程如下:
- 推送通知設備寄存器
註冊事件在iOS項目(AppDelegate事件)中處理..
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) { //base.RegisteredForRemoteNotifications(application, deviceToken); App.ConfigurePushNotifications(deviceToken.ToString()); }
- 個
ConfigurePushNotifications是在XF共享項目..
public static void ConfigurePushNotifications(string deviceToken) { var azureComm = DependencyService.Get<Interop.IAzureCommunication>(); azureComm.RegisterForPushTags( "sb://eight-technology.servicebus.windows.net/", ".. token ..", "react-push-notification-hub", deviceToken, StateManager.SelectedNodes.Select(m => "dealer-" + m).ToArray()); }
的實施是相當多按提供的示例代碼(包含在iOS的項目)
public class AzureCommunication : DealerwebReact.Interop.IAzureCommunication { public void RegisterForPushTags(string url, string key, string hubName, string deviceToken, string[] tags) { var cs = SBConnectionString.CreateListenAccess(new NSUrl(url), key); var hub = new SBNotificationHub(cs, hubName); hub.RegisterNativeAsync(deviceToken, new NSSet(tags), err => { if (err != null) Console.WriteLine("Error: " + err.Description); else Console.WriteLine("Success"); }); } }
感謝尼基塔 - 這是我合作過有關指導是。我會用一些代碼更新我的帖子,但我根本不操縱APN令牌,它直接作爲NSString傳遞給你的類。當我登錄時,它的格式爲'<... ... ...>',我認爲這是正確的,因爲這是我可以在APNS測試儀中使用的。你需要改變嗎? –
提供的代碼 - 在註冊時非常簡單。任何想法將不勝感激。示例設備令牌是:'<97e0614c 3c18b3d7 a8d5274b ca7037dc 3e00e703 635d5172 3c755d9c 8616f375>' –
@RudiVisser到目前爲止您還沒有看到您的問題。我實際上會去除小於和大於字符以及像這樣的任何空格:'deviceToken.ToString()。Replace(「<」,string.Empty).Replace(「>」,string.Empty).Replace(「 「,string.Empty);' – hvaughan3