{ "id": "155206", "key": "AC-691", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "12217", "key": "AC", "name": "Appcelerator - INBOX", "projectCategory": { "id": "10000", "description": "", "name": "Customer Service" } }, "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-03-29T14:50:30.000+0000", "created": "2016-02-29T14:17:53.000+0000", "labels": [], "versions": [ { "id": "17035", "name": "Appcelerator Studio 4.4.0", "archived": false, "released": false } ], "issuelinks": [], "assignee": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2016-03-29T16:09:05.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "14560", "name": "Arrow Push" }, { "id": "14548", "name": "Titanium SDK & CLI", "description": "Please enter tickets related to the MobileSDK here." } ], "description": "Apple no longer provides separate Push Notification SSL certificates for Production and Development Apps.\r\n\r\nWhich may be causing Push Notification failures to newly submitted apps on the app store using the Appcelerator Platform\r\n\r\nInstead Apple now provide the following 2 certificates:\r\n\r\n* *\"Apple Push Notification service SSL (Sandbox)\" *\r\n* *\"Apple Push Notification service SSL (Sandbox & Production)\" *\r\n\r\nPlease see the certificates selection on the Apple Developer center\r\n\r\nThe Certificate's are no longer listed as:\r\n\r\n*APNs Developement iOS* or *APNs Production iOS*\r\n\r\nbut NOW instead simply as *Apple Push Notification*\r\n\r\nh3. *+In Development+*\r\nDevice registers to Push, receives a device token and subscribes to a channel\r\n\r\nh3. *+In Production (ad Hoc or App Store Submissions)+*\r\nDevice registers to Push, receives a device token and subscribes to a channel\r\n\r\nThis is confirmed in the Appcelerator Platform\r\n\r\n* Devices show the device\r\n* Devices shows the channel subscribed\r\n\r\nThis is also confirmed on the device's APSD logs which are observed by downloading and installing PersistentConnectionLogging.mobileconfig on the device\r\n\r\nThis shows:\r\n\r\n* The device is enabled to receive Push from my bundle ID\r\n* The Device receives a device Token\r\n* The Push service is enabled topics\r\n\r\nh3. *Steps to reproduce*\r\n\r\n# Create a APP ID in Apple Developer Center and enable for Push notifications\r\n# Create and Download both Sandbox and Sandbox & Production Push notification certificates.\r\n# Download and export certificates in .p12 format\r\n# Download both Development and Ad Hoc Provisioning Profiles for this App ID\r\n# Login to Appcelerator Platform upload certificates in development and production\r\n# Build Sample code App (below) on an iOS device and or install as a Ad Hoc build on a registered device using Provisioning Profiles Downloaded.\r\n# Launch App on device.\r\n# Check it is subscribed, and appears under Devices in Appcelerator Platform.\r\n# Send Push notification using Appcelerator Platform *\"Send Push Notification\"* Button\r\n# Check Device\r\n \r\n*Sample basic Push notification:*\r\n\r\n{code:java}\r\n{\r\n \"alert\": \"try this3\",\r\n \"sound\": \"none\",\r\n \"vibrate\": false\r\n}\r\n{code}\r\n\r\n*The Push Logs Shows:*\r\n\r\n* *Success* for the iOS device shown under devices\r\n\r\nHowever, no push notification is seen on the device (multiple devices tested).\r\n\r\nThe Simple sample code used for Push:\r\n\r\n\r\n{code:java}\r\n\r\nTitanium.UI.setBackgroundColor('#000');\r\n\r\n\r\nvar win1 = Titanium.UI.createWindow({ \r\n title:'Window 1',\r\n backgroundColor:'#fff'\r\n});\r\n\r\nvar label1 = Titanium.UI.createLabel({\r\n\tcolor:'#999',\r\n\ttext:'Push Notification App',\r\n\tfont:{fontSize:20,fontFamily:'Helvetica Neue'},\r\n\ttextAlign:'center',\r\n\twidth:'auto'\r\n});\r\n\r\nwin1.add(label1);\r\n\r\n\r\n\r\nvar deviceToken = null;\r\nTi.Cloud = require('ti.cloud');\r\n\r\nif (Ti.Platform.name == \"iPhone OS\"){\r\n \r\nif (parseInt(Ti.Platform.version.split(\".\")[0]) >= 8) {\r\n \r\n // Wait for user settings to be registered before registering for push notifications\r\n Ti.App.iOS.addEventListener('usernotificationsettings', function registerForPush() {\r\n \r\n // Remove event listener once registered for push notifications\r\n Ti.App.iOS.removeEventListener('usernotificationsettings', registerForPush); \r\n \r\n Ti.Network.registerForPushNotifications({\r\n success: deviceTokenSuccess,\r\n error: deviceTokenError,\r\n callback: receivePush\r\n });\r\n });\r\n \r\n // Register notification types to use\r\n Ti.App.iOS.registerUserNotificationSettings({\r\n types: [\r\n Ti.App.iOS.USER_NOTIFICATION_TYPE_ALERT,\r\n Ti.App.iOS.USER_NOTIFICATION_TYPE_SOUND,\r\n Ti.App.iOS.USER_NOTIFICATION_TYPE_BADGE\r\n ]\r\n });\r\n}\r\n \r\n// For iOS 7 and earlier\r\nelse {\r\n Ti.Network.registerForPushNotifications({\r\n // Specifies which notifications to receive\r\n types: [\r\n Ti.Network.NOTIFICATION_TYPE_BADGE,\r\n Ti.Network.NOTIFICATION_TYPE_ALERT,\r\n Ti.Network.NOTIFICATION_TYPE_SOUND\r\n ],\r\n success: deviceTokenSuccess,\r\n error: deviceTokenError,\r\n callback: receivePush\r\n });\r\n}\r\n\r\n// Process incoming push notifications\r\nfunction receivePush(e) {\r\n alert('Received push: ' + JSON.stringify(e)); \r\n}\r\n\r\n// Save the device token for subsequent API calls\r\nfunction deviceTokenSuccess(e) {\r\n deviceToken = e.deviceToken;\r\n alert('Device Token' + deviceToken);\r\n subscribeToChannel();\r\n }\r\nfunction deviceTokenError(e) {\r\n alert('Failed to register for push notifications! ' + e.error);\r\n}\r\n}\r\n\r\n\r\n\r\nfunction subscribeToChannel(){\r\n // Subscribe the user and device to athe 'test' channel\r\n // Specify the push type as either 'android' for Android or 'ios' for iOS\r\n // Check if logged in:\r\n Ti.Cloud.PushNotifications.subscribeToken({\r\n device_token: deviceToken,\r\n channel: 'test',\r\n type: Ti.Platform.name == 'android' ? 'android' : 'ios'\r\n }, function (e) {\r\n if (e.success) {\r\n alert('Subscribed');\r\n } else {\r\n alert('Error:\\n' + ((e.error && e.message) || JSON.stringify(e)));\r\n }\r\n });\r\n}\r\n\r\nwin1.open();\r\n\r\n{code}\r\n\r\nFor security purposes, the Apple Push Notification certificates have not been included, although can be provided.", "attachment": [], "flagged": false, "summary": "New Apple Push notification certificates not delivering Push Notifications", "creator": { "name": "anx@getgokart.com", "key": "anx@getgokart.com", "displayName": "Anx", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "anx@getgokart.com", "key": "anx@getgokart.com", "displayName": "Anx", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "iOS 9.2\r\nAppcelerator Studio 4.4.0\r\nTitanium SDK 4.0.0\r\nTi.Cloud 3.2.8 and 3.2.9\r\n", "comment": { "comments": [ { "id": "380391", "author": { "name": "sean.maclachlan", "key": "sean.maclachlan", "displayName": "Sean MacLachlan", "active": true, "timeZone": "America/Boise" }, "body": "I am also having the same issue with iPhone 6\r\n/Users/Sean/Desktop/Push Log.png\r\nLogs show success in pushing globally and individual channel but nothing appears on the device.", "updateAuthor": { "name": "sean.maclachlan", "key": "sean.maclachlan", "displayName": "Sean MacLachlan", "active": true, "timeZone": "America/Boise" }, "created": "2016-03-22T18:04:43.000+0000", "updated": "2016-03-22T18:04:43.000+0000" }, { "id": "380606", "author": { "name": "AppDev", "key": "appdev", "displayName": "AppDev", "active": true, "timeZone": "Europe/Berlin" }, "body": "Also affected by this on iOS. Android works, one of three iOS apps works too. Regenerating the Provisioning Profile does not help.\n", "updateAuthor": { "name": "AppDev", "key": "appdev", "displayName": "AppDev", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-24T14:14:00.000+0000", "updated": "2016-03-24T14:14:00.000+0000" }, { "id": "380733", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello, I have tested the iOS push notification issue in production mode. Push notification is working as expected. Here is the steps I followed \r\n\r\n1. I downloaded the new wwdr certificate from here http://www.appcelerator.com/blog/2016/02/experiencing-ios-certification-issues-check-your-wwdr-intermediate-certificate/\r\n\r\n2. I already had an appid generated.\r\n\r\n3. *Generated an Apple Push Notification Certificate for production build. In where my new wwdr certificate was used for Certificate Signing Request (CSR).*\r\n\r\n4. Export the Certificate.\r\n\r\n5. Upload certificate to Arrow.\r\n\r\n6. Send push notification.\r\n\r\nNotification was received in the device for production build. I would suggest to make sure you have the new wwdr certificate installed in your system for performing the Certificate Signing Request (CSR). \r\n\r\nThanks.\r\n", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2016-03-26T09:54:46.000+0000", "updated": "2016-03-26T10:00:56.000+0000" }, { "id": "380864", "author": { "name": "sean.maclachlan", "key": "sean.maclachlan", "displayName": "Sean MacLachlan", "active": true, "timeZone": "America/Boise" }, "body": "It turned out I had both a current and expired WWDR certificate. Once I deleted the expired certificate and re exported then things worked for me.", "updateAuthor": { "name": "sean.maclachlan", "key": "sean.maclachlan", "displayName": "Sean MacLachlan", "active": true, "timeZone": "America/Boise" }, "created": "2016-03-28T22:40:51.000+0000", "updated": "2016-03-28T22:40:51.000+0000" }, { "id": "380948", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Thanks for your reply and letting us know. Closing this ticket. ", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2016-03-29T14:50:16.000+0000", "updated": "2016-03-29T14:50:16.000+0000" }, { "id": "380951", "author": { "name": "anx@getgokart.com", "key": "anx@getgokart.com", "displayName": "Anx", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Sharif, quick question please. the issue I had was that the I created a App Store Distribution provisioning profiles BEFORE the new WWDR certificate was needed. and the PN certificates after the new WWDR was installed.\r\n\r\nDo i need to republish my app to the app store with a new provisioning profile?", "updateAuthor": { "name": "anx@getgokart.com", "key": "anx@getgokart.com", "displayName": "Anx", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-29T15:17:48.000+0000", "updated": "2016-03-29T15:17:48.000+0000" }, { "id": "380956", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello, Yes, You will need to create and install a new distribution certificate with the new WWDR certificate that is installed in your system. After that, you need to Create and install a new distribution provisioning profile pointing to the new distribution certificate. Build your app, embedding the distribution provisioning profile. Upload the app to iTunes Connect and kick-off the Apple review process OR distribute your application package. More info http://docs.appcelerator.com/platform/latest/#!/guide/Distributing_iOS_apps. Thanks.", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2016-03-29T16:09:05.000+0000", "updated": "2016-03-29T16:09:05.000+0000" } ], "maxResults": 8, "total": 8, "startAt": 0 } } }